我有一個bash腳本返回一個列表,這是我想要的,但我需要將結果放入一個變量中,以便我可以在for循環中一次對它們進行操作。如何將eval的結果賦給bash腳本中的變量?
#!/bin/bash
processID="ps aux | grep `date +"%b"` | gawk '{print \$2}'"
eval $processID
如何將eval的結果賦值給一個變量? 謝謝
我有一個bash腳本返回一個列表,這是我想要的,但我需要將結果放入一個變量中,以便我可以在for循環中一次對它們進行操作。如何將eval的結果賦給bash腳本中的變量?
#!/bin/bash
processID="ps aux | grep `date +"%b"` | gawk '{print \$2}'"
eval $processID
如何將eval的結果賦值給一個變量? 謝謝
pid=$(ps aux | grep `date +"%b"` | awk '{print $2}')
無論是在命令行還是在腳本中,我都會收到\ $ 2反斜槓不是最後一個字符的錯誤。當我拿出來時,它運行正常。謝謝。 – jimd 2012-04-10 01:08:27
因爲您已經在使用awk,所以您可以刪除對grep的需求。 「$」不需要轉義,因爲擴展不會出現在單引號內。
pid=$(ps aux | awk -vdate=$(date +%b) '$0 ~ date { print $2 }')
如果您期望返回多的pid,使用數組:
pids=($(ps aux | awk -vdate=$(date +%b) '$0 ~ date { print $2 }'))
for pid in "${pids[@]}"; do
...
done
你到底想幹什麼?你不需要一個變量來遍歷命令輸出,[''eval'幾乎總是一個壞主意](http://mywiki.wooledge.org/BashFAQ/048)。您可能還想閱讀[進程管理](http://mywiki.wooledge.org/ProcessManagement)。 – l0b0 2012-04-10 11:32:53
我試圖對由另一個命令生成的列表進行操作。雖然我不需要用於命令輸出的變量,但在我看來,它使事情對未來更具可讀性。儘管如此,我沒有使用eval就完成了我的目標,儘管閱讀你的參考文獻可以保證我這樣做沒有錯。感謝您的意見。 – jimd 2012-04-11 00:53:40
[適用信息]的另一部分(http://mywiki.wooledge.org/BashFAQ/050)。 – 2012-04-25 16:37:02