[英]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.