2010-04-06 330 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