遇到一个奇怪的问题
发表于 : 2016-12-12 14:01
我有一个脚本:
[root@mgt ~]# cat -n a.sh
1 echo begin
2 para_compute arg1 arg2
3 echo end
(第2行para_compute是第三方的一个并行计算程序。)
我遇到的问题是:
1. 如果执行bash a.sh,则整个脚本可以顺利执行完,没有报错,最后返回值为0.
2. 如果执行bash < a.sh,则脚本在运行完第2行的para_compute程序之后,就直接退出了,不再往下执行,同样没有报错,返回值为0.
然后我做了两个测试:
1. 将第2行改为 para_compute arg1 arg2 && echo ok,然后运行bash < a.sh,同样只能运行到第2行,且能输出ok,说明para_compute的计算没有问题(para_compute的输出日志也显示该并行程序是能顺利计算完毕的)
2. 将第2行改为eval para_compute arg1 arg2,然后运行bash < a.sh,该脚本能全部运行完。
问题:
为什么bash a.sh可以运行完,而bash < a.sh却不可以,为什么加上eval para_compute ...之后就又可以运行完了?
[root@mgt ~]# cat -n a.sh
1 echo begin
2 para_compute arg1 arg2
3 echo end
(第2行para_compute是第三方的一个并行计算程序。)
我遇到的问题是:
1. 如果执行bash a.sh,则整个脚本可以顺利执行完,没有报错,最后返回值为0.
2. 如果执行bash < a.sh,则脚本在运行完第2行的para_compute程序之后,就直接退出了,不再往下执行,同样没有报错,返回值为0.
然后我做了两个测试:
1. 将第2行改为 para_compute arg1 arg2 && echo ok,然后运行bash < a.sh,同样只能运行到第2行,且能输出ok,说明para_compute的计算没有问题(para_compute的输出日志也显示该并行程序是能顺利计算完毕的)
2. 将第2行改为eval para_compute arg1 arg2,然后运行bash < a.sh,该脚本能全部运行完。
问题:
为什么bash a.sh可以运行完,而bash < a.sh却不可以,为什么加上eval para_compute ...之后就又可以运行完了?