1
我有一個已知功能的Java程序。我想包裹一個bash腳本來傳遞關聯數組中的每個索引作爲參數。當java程序運行時,Maven將輸出寫入控制檯。Bash腳本 - 使用期望從標準輸出讀取
我想要的是讓bash在繼續之前等待在標準輸出中看到「[INFO] BUILD SUCCESS」行。一旦它確認了java進程成功運行,我會在java程序創建的文本文件上執行一些任務。只有這樣我纔想去循環的下一次迭代。
我的參數關聯數組:
params=([1]cat [2]dog [3]fish)
環路邏輯:
for i in "${!params[@]}"
do
mvn exec:java -Dexec.mainClass="com.company.ProgramMainClass" -Dexec.args="$i '2015-11-01'" | /usr/bin/expect "[INFO] BUILD SUCCESS"
mv /tmp/outputfile.csv /path/to/directory/${params[$i]}_outputfile.csv
done
我不能找出語法以使期望在標準輸出的工作。我已經閱讀了幾個例子,並通過期望手冊進行了討論,但我只是不理解它是如何工作的。
我覺得我應該能夠管輸出標準的期望和腳本等待,直到期望看到給定的字符串。但它不起作用。有任何建議嗎?謝謝。
你不需要期待'[INFO] BUILD SUCCESS'。純粹的bash(或者'grep')可以勝任。例如'blah blah command | grep -q'^ \ [INFO] BUILD SUCCESS $'',並檢查返回狀態。 – 4ae1e1
http://stackoverflow.com/questions/13377436/executing-maven-task-from-shell-script-and-getting-error-codes –