2010-04-06 276 views
0

我有一个地方命令存储在一个变量执行命令

首先我得到命令(假设“的ls -l”命令)

cmd=`cat /proc/2345/cmdline` 

现在做的脚本文件

echo $cmd 

输出

ls -l 

现在如何使用$ cmd来实际执行该命令。这是ls -l

+0

请使用带变量的命令(“”),cmd =“cat/proc/2345/cmdline”,将使您的生活变得更加轻松。 – Anders 2010-04-06 12:01:54

+0

谢谢,我也会检查。 – 2010-04-06 12:24:52

回答

5

简单的答案是:

$cmd 
6

BASH FAQ entry #50

+0

+1,它真的很高兴看到更新的BASH指南可用。其他人开始停滞不前。 – 2010-04-06 12:16:07

2

如果你没有业务,将其存储在一个变量,然后没有。照常运行。

cat /proc/2345/cmdline 
3
eval $cmd 

只是$cmd在许多情况下工作,但并非总是如此。有关更多详细信息,请参阅文章“Bash: Why use eval with variable expansion?”。

+0

你的参考文献没有提到[evval of eval](http://mywiki.wooledge.org/BashFAQ/048)。 – 2010-04-09 18:54:09

+0

@丹尼斯:谢谢,很好的链接。问题是:它适用于这种情况吗? – Heinzi 2010-04-10 13:12:37

+0

是的,因为'/ proc/2345/cmdline'文件可能包含类似'rm -rf /'的可怕内容(但在这种情况下,这种危险也适用于直接执行'$ cmd')。 – 2010-04-10 13:21:59