簡體   English   中英

bash shell腳本在循環執行程序后終止

[英]bash shell script terminates after program execution in loop

下列簡化的(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個線程的父進程。 如果那完全有意義,那有關系嗎?

我才發現是什么原因造成的。 我從某個地方提取了進度條bash函數,並在./binary之后調用了該函數。 這導致我的腳本停止運行……我只是沒有想到這是更早的原因,因為它沒有輸出任何內容。 那是一個愚蠢的假設。

為了完整起見,這是我使用的進度條: https : //github.com/fearside/ProgressBar/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM