我有以下问题:我有一个通过以下方式执行内部后台进程的脚本:
====myinternalscript====
...
myinternalscript-program &
...
从等待myinternalscript-program终止的脚本调用:
====mainscript====
...
myinternalscript
while [ "$(ps -u ${CURRENT_USER} | grep myinternalscript-program)" ];
...
当我想在第一次通话结束之前再次调用mainscript时,问题就来了。这使得如果与第一个调用相关的myinternalscript -program在第二个myinternalscript-program完成之前结束,则第一次调用mainscript的暂停条件仍然为真(因为第二个mainscript调用调用了myinternalscript-program)和第一个mainscript在第二个主脚本调用的myinternalscript -program也完成之前,调用不会前进。
我的解决方案是:
====mainscript====
...
myinternalscript
internalpid = #some way to get the myinternalscript-program PID
while [ "$(ps -u ${CURRENT_USER} | grep myinternalscript-program| grep $internalpid)" ];
...
其中“internalpid”具有在执行myinternalscript期间调用的myinternalscript-program的 PID 。
正如其中一个答案所建议的那样,$!在myinternalscript-program可以给我我在myinternalscript上所需的 PID 信息之后,我可以想象某种方式将该信息获取到mainscript,但我没有编辑myinternalscript的权限。在这种情况下,挑战是:
如何在 不编辑myinternalscript的情况下在mainscript中获取myinternalscript-program PID ?
显然我也可以使用其他方式暂停mainscript执行来解决问题,但是如果我最初想做的事情是否可以实现,我会感到困惑。
任何意见?