如何在一行bash中执行以字符串形式存储的命令。例如,这不起作用,但我想做类似的事情。
echo "uname -a" | eval
是否可以这样做,还是我必须创建一个bash脚本?
更新
我正在使用boom来存储一行命令行语句。我希望能够得到它们并执行它们。像这样:
boom echo name | eval
答案 0 :(得分:3)
如果您想专门使用echo
并且不介意产生子shell,echo "uname -a" | sh
可以正常工作。
答案 1 :(得分:2)
s='<your_string>'
eval "$s"
请注意,在这种情况下通常会有更好的方法(即很可能你不需要 eval )。
答案 2 :(得分:1)
#!/bin/sh
s="date +%Y-%m-%d"
$s
执行此脚本会打印2012-02-01
。
答案 3 :(得分:0)
你可以像这样使用bash -c选项:
bash -c "your-string-with-shell-commands"
例如:
bash -c "dirname $PWD/foo"