猿问

如何将命令存储在shell脚本中的变量中?

如何将命令存储在shell脚本中的变量中?

我想在一个变量中存储一个以后使用的命令(不是命令的输出,而是命令本身)。

我有一个简单的脚本如下:

command="ls";echo "Command: $command"; #Output is: Command: lsb=`$command`;echo $b; #Output is:
 public_html REV test... (command worked successfully)

然而,当我尝试一些更复杂的东西时,它就失败了。例如,如果我

command="ls | grep -c '^'";

产出如下:

Command: ls | grep -c '^'ls: cannot access |: No such file or directory
ls: cannot access grep: No such file or directory
ls: cannot access '^': No such file or directory

知道我如何将这样的命令(使用管道/多个命令)存储在变量中以供以后使用吗?


蝴蝶不菲
浏览 2153回答 3
3回答

犯罪嫌疑人X

使用val:x="ls | wc"eval "$x"y=$(eval "$x")echo "$y"

慕工程0101907

var=$(echo&nbsp;"asdf")echo&nbsp;$var#&nbsp;=>&nbsp;asdf使用此方法,将立即计算该命令并存储其返回值。stored_date=$(date)echo&nbsp;$stored_date#&nbsp;=>&nbsp;Thu&nbsp;Jan&nbsp;15&nbsp;10:57:16&nbsp;EST&nbsp;2015#&nbsp;(wait&nbsp;a&nbsp;few&nbsp;seconds)echo&nbsp;$stored_date#&nbsp; =>&nbsp;Thu&nbsp;Jan&nbsp;15&nbsp;10:57:16&nbsp;EST&nbsp;2015背勾也一样stored_date=`date`echo&nbsp;$stored_date#&nbsp;=>&nbsp;Thu&nbsp;Jan&nbsp;15&nbsp;11:02:19&nbsp;EST&nbsp;2015#&nbsp;(wait&nbsp;a&nbsp;few&nbsp;seconds)echo&nbsp;$stored_date#&nbsp; =>&nbsp;Thu&nbsp;Jan&nbsp;15&nbsp;11:02:19&nbsp;EST&nbsp;2015在$(...)将不会在以后对其进行评估。stored_date=$(eval&nbsp;"date")echo&nbsp;$stored_date#&nbsp;=>&nbsp;Thu&nbsp;Jan&nbsp;15&nbsp;11:05:30&nbsp;EST&nbsp;2015#&nbsp;(wait&nbsp;a&nbsp;few&nbsp;seconds)echo&nbsp;$stored_date#&nbsp; =>&nbsp;Thu&nbsp;Jan&nbsp;15&nbsp;11:05:30&nbsp;EST&nbsp;2015使用val时,将在下列情况下对其进行计算eval使用stored_date="date"&nbsp;#&nbsp;<&nbsp;storing&nbsp;the&nbsp;command&nbsp;itselfecho&nbsp;$(eval&nbsp;"$stored_date")#&nbsp;=>&nbsp;Thu&nbsp;Jan&nbsp;15&nbsp;11:07:05&nbsp;EST&nbsp;2015#&nbsp; (wait&nbsp;a&nbsp;few&nbsp;seconds)echo&nbsp;$(eval&nbsp;"$stored_date")#&nbsp;=>&nbsp;Thu&nbsp;Jan&nbsp;15&nbsp;11:07:16&nbsp;EST&nbsp;2015#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;^^&nbsp;Time&nbsp;changed在上面的示例中,如果需要运行带有参数的命令,请将它们放在要存储的字符串中。stored_date="date&nbsp;-u"#&nbsp;...对于bash脚本,这很少相关,但最后一个注意事项。小心eval..只有您控制的字符串,而不是来自不受信任用户的字符串或从不受信任的用户输入生成的字符串。
随时随地看视频慕课网APP
我要回答