shell 將變量當命令執行問題【多條命令同時執行問題】

shell將變量當命令執行問題【多條命令同時執行問題】


今天寫了個shell腳本,腳本中需要將變量當做shell命令運行,通常的方法有多種,比如:

`${var}` 將變量內容當shell命令行執行

$(${var}) 將變量內容當shell命令執行

${var}將變量內容當shell命令執行【不推薦此種方法】

 

但是這3種方法只能運行單條命令,當命令是下面類型時就會有問題:

VAR1='cd /home ;echo "hello";echo "good"'

VAR2='cd /home && echo "hello" && echo "good"'

此時執行

 

$(${VAR1}) 就會發現沒有輸出,通過跟蹤命令執行過程發現shell自動將 ; && 使用''進行了限制,爲了解決這個問題查了很多資料,沒有好的解決方法,

通常我們的crontab 命令會有此種寫法,而且執行沒有問題,通過查看crontab的資料,發現使用的system函數,所以最後使用awk的system函數解決問題。

 

解決方法:

VAR1='cd /home ;echo "hello";echo "good"'

VAR2='cd /home && echo "hello" && echo "good"'

echo ${VAR1}|awk '{run=$0;system(run)}'

echo ${VAR2}|awk '{run=$0;system(run)}'

執行結果正確

   hello

   good

   hello

   good


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