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 –