如何在bash的一行中執行存儲爲字符串的命令?例如,這不起作用,但我想做類似的事情。你將如何在bash的一行中執行存儲爲字符串的命令
echo "uname -a" | eval
是否有可能做到這一點,或者我將不得不創建一個bash腳本?
更新
我使用boom存放一些一行命令行語句。我希望能夠得到它們並執行它們。事情是這樣的:
boom echo name | eval
如何在bash的一行中執行存儲爲字符串的命令?例如,這不起作用,但我想做類似的事情。你將如何在bash的一行中執行存儲爲字符串的命令
echo "uname -a" | eval
是否有可能做到這一點,或者我將不得不創建一個bash腳本?
更新
我使用boom存放一些一行命令行語句。我希望能夠得到它們並執行它們。事情是這樣的:
boom echo name | eval
如果你想使用echo
明確,不介意產卵子shell,echo "uname -a" | sh
作品。
#!/bin/sh
s="date +%Y-%m-%d"
$s
執行這個腳本打印2012-02-01
。
是否可以在命令行上執行而不是腳本? – Neil 2012-02-01 11:48:21
在bash中它的工作原理是一樣的。 – 2012-02-01 11:50:55
只是一個方面說明:一些shell(例如zsh)默認情況下不執行字/字段拆分,而那些由多個字組成的shell命令將作爲單個命令展開(即不起作用)。 – 2012-02-01 11:57:11
s='<your_string>'
eval "$s"
注意,通常有在這種情況下一個更好的方法(即最有可能你不需要EVAL)。
您可以使用bash -c選項是這樣的:
bash -c "your-string-with-shell-commands"
如:
bash -c "dirname $PWD/foo"
如果你特別想使用echo,'echo「uname -a」| sh'會工作。 – tripleee 2012-02-01 11:53:45
@tripleee謝謝你的作品:)添加你的評論作爲答案,我會接受它。 – Neil 2012-02-01 11:57:18