shell中執行一個字符串命令的方法

先來寫正確的方法

cmd="echo hello word"

$cmd

或者eval $cmd。實際我測試的時候略有差別。比如執行‘ls -l’命令的時候,沒有eval得到的就沒有顏色。有了eval就有顏色。跟自己敲入命令的執行結果是一樣的。這個我不知道爲什麼。盼高手來解答。

over

 

網上有很多人用 `eval $cmd` 或者 $($cmd) 。我試了一下都不行。鄙視那些沒經過測試就亂回答問題的人。其實不用``或者$()就對了。

 

千萬要注意的是:你的命令一定要用單引號括起來,避免你的命令中含有$var這樣的變量被擴展後賦值給cmd(其實還有很多擴展)。這樣你執行的命令就可能產生問題。而且還是很隱蔽的問題。原理很簡單,shell僅僅要得到一個原封不動的字符串。而後將該字符串送入shell就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章