我有一个bash脚本调用这样的jar文件:
awk -f fileformat.awk list.txt | while read arg1 arg2 arg3 arg4 arg5; do
java -jar /bin/2dbf.jar arg1 arg2 arg3 arg4 arg5
if [[ ${?} -eq 0 ]]; then
echo "2dbf.jar finished at: `date "+%F %T"`"
echo "---------------------------------------------"
else
echo "exiting..."
exit 10
fi
done
Run Code Online (Sandbox Code Playgroud)
该fileformat.awk是这样的:如果行开头#或不具有5个字段退出程序.
{
if (NF == 5 && $1 !~ /#.*/) {
print $0
} else {
print "incorrect file format"
"exit 1"
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的是exit 1在awk脚本中终止整个shell脚本.但实际上并没有,因为错误的选项,jar文件会抛出异常.
因为你exit是在AWK程序报价,它的产卵子shell和退出该.并且因为您正在打印错误消息stdout,它将while循环播放.将您的AWK脚本更改为此脚本应该可以正常工作:
{
if (NF == 5 && $1 !~ /#.*/) {
print $0
} else {
print "incorrect file format" > "/dev/stderr"
exit 1
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2865 次 |
| 最近记录: |