2012-02-01 49 views
1

如何在bash的一行中執行存儲爲字符串的命令?例如,這不起作用,但我想做類似的事情。你將如何在bash的一行中執行存儲爲字符串的命令

echo "uname -a" | eval 

是否有可能做到這一點,或者我將不得不創建一個bash腳本?

更新

我使用boom存放一些一行命令行語句。我希望能夠得到它們並執行它們。事情是這樣的:

boom echo name | eval 
+0

如果你特別想使用echo,'echo「uname -a」| sh'會工作。 – tripleee 2012-02-01 11:53:45

+0

@tripleee謝謝你的作品:)添加你的評論作爲答案,我會接受它。 – Neil 2012-02-01 11:57:18

回答

3

如果你想使用echo明確,不介意產卵子shell,echo "uname -a" | sh作品。

1
#!/bin/sh 
s="date +%Y-%m-%d" 
$s 

執行這個腳本打印2012-02-01

+0

是否可以在命令行上執行而不是腳本? – Neil 2012-02-01 11:48:21

+0

在bash中它的工作原理是一樣的。 – 2012-02-01 11:50:55

+1

只是一個方面說明:一些shell(例如zsh)默認情況下不執行字/字段拆分,而那些由多個字組成的shell命令將作爲單個命令展開(即不起作用)。 – 2012-02-01 11:57:11

2
s='<your_string>' 
eval "$s" 

注意,通常有在這種情況下一個更好的方法(即最有可能你不需要EVAL)。

0

您可以使用bash -c選項是這樣的:

bash -c "your-string-with-shell-commands" 

如:

bash -c "dirname $PWD/foo"