bash shell脚本在循环中执行程序后终止

时间:2015-04-07 09:33:53

标签: macos bash shell

以下简化(printf / echo / cd / sleep / progressbar命令无关紧要)bash shell脚本在第一次执行二进制文件后终止。为什么是这样?我可以在不修改二进制文件的情况下进行或测试任何东西(只能在一定程度上这样做吗?)

PROGRESS=0
SIMULATIONS=30

for number in $(seq ${PROGRESS} ${SIMULATIONS})
  do
  echo 'INB4 TERMINATION'
  nohup ./binary -someflag
  # do other stuff next
  echo 'NEVER GETS HERE'
done

我已阅读了traps,但添加了这一行:

trap "echo 'trap invoked'; exit" SIGHUP SIGINT SIGTERM
  • 似乎不起作用。
  • 使用nohup与否{似乎无关紧要。
  • 没有二进制命令,循环工作正常。

二进制文件

它运行一个3D机器人模拟实验(它本身一次分别运行2个机器人模拟器进程(使用C / C ++ system()命令)。此外,每个机器人模拟器为16个机器人控制器中的每一个启动一个线程)。所以二进制文件是32个线程的父进程。如果这有意义,那有关系吗?

1 个答案:

答案 0 :(得分:0)

我刚刚发现了导致它的原因。我从某个地方拉出了一个进度条bash函数,并在./binary之后调用了该函数。这导致我的脚本停止...我只是没想到它是原因,因为它没有输出任何东西。这是一个愚蠢的假设。

为了完整性,这是我使用的进度条: https://github.com/fearside/ProgressBar/