bik*_*ben 4 linux bash shell while-loop do-while
基本上这是我的代码:
bay=$(prog -some flags)
while [ $bay = "Another instance of this program is running, please exit it first" ]
do
echo "Awaiting Access to program"
do
.....
Run Code Online (Sandbox Code Playgroud)
我有一个程序,它只允许一个实例一次运行,因为它与我的硬件交互的方式,当另一个实例运行时它踢出以下消息"该程序的另一个实例正在运行,请先退出它" .
我需要能够运行多个脚本,这将使用相同的程序,所以我决定使用上面的代码.我的问题是,当我运行我的两个脚本时,一个人将获得对程序的访问并按照需要运行,但另一个将注意到错误,然后卡在一个无限循环中,回显"等待访问程序".
错过了什么?Statement是执行CLI命令还是只是重新执行其原始执行?或者我的问题在哪里?
您没有bay在某个地方更新循环内部的变量.它被设置一次并保持不变.你需要每次都重新计算它.
可以bay在循环内设置,也可以在while循环中设置.
while [ `prog -some flags` = "Another instance of this program is running, please exit it first" ]
Run Code Online (Sandbox Code Playgroud)
编辑:
从您的评论中,您希望以后能够引用此输出.你可以回到你所拥有的,但在你的阻塞循环内,把你的bay=$(prog -some flags)命令放在循环中.它会留在你身边供你使用.
bay=$(prog -some flags)
while [ $bay = "Another instance of this program is running, please exit it first" ]
do
echo "Awaiting Access to program"
bay=$(prog -some flags)
done
.....
Run Code Online (Sandbox Code Playgroud)