如何在一行bash中执行以字符串形式存储的命令

时间:2012-02-01 11:42:49

标签: bash

如何在一行bash中执行以字符串形式存储的命令。例如,这不起作用,但我想做类似的事情。

echo "uname -a" | eval

是否可以这样做,还是我必须创建一个bash脚本?

更新

我正在使用boom来存储一行命令行语句。我希望能够得到它们并执行它们。像这样:

boom echo name | eval

4 个答案:

答案 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"