我正在編寫一個bash腳本,它將調用一個返回某個輸出並返回代碼的程序(讓我們稱它爲foo)。我關心程序的返回代碼和輸出行數(但不關心輸出本身)。由於該程序涉及通過互聯網檢索數據,因此我不希望兩次調用它(特別是,如果兩個調用中只有一個由於網絡瞬時問題或類似原因而失敗,可能會導致問題)。我可以想出最好的腳本來捕獲輸出行數和返回代碼,如下所示。有更優雅的東西嗎?同時捕獲輸出和返回代碼的行數
#!/bin/bash
line=$(foo | wc -l; echo ${PIPESTATUS[0]})
line=$(echo line | tr '\n' ' ')
lineCount=$(echo line | awk '{ print $1}')
returnCode=$(echo line | awk '{ print $2}')
+1非常好的答案。 – 2012-03-08 20:20:14
我非常喜歡第二種方法。 set + o pipefail可以省略,假設在腳本的前面沒有設置pipefail,對吧? – orangejulius 2012-03-08 20:27:06
@ spectre256:是的,我已經添加它只是爲了強調'pipefail'不是必需的。 – Philipp 2012-03-08 20:40:22