2024-03-29 11:37:56 发布
网友
我编写了一个运行python程序的shell脚本。然后我想使用xdool将一个文件加载到程序中。现在这是我的密码:
#!/bin/bash cd ~/Folder python program.py & sleep 10 WID=$(xdotool search --onlyvisible program) ....
我真的不喜欢我的解决方案只是等待10秒,以便程序加载。有更好的办法吗?你知道吗
这要看情况了。如果program.py应该完成,然后继续xdotool,那么您可能希望使用&&而不是&。一个&意味着您希望执行命令,然后尽快转到下一个命令,而不必等待它完成。dobule &&意味着您要等待执行完成,然后只有在零错误退出时才继续。如果要运行下一个命令而不管program.py是否成功,也可以删除&或使用;。我的意思是:
program.py
xdotool
&&
&
;
#!/bin/bash cd ~/Folder python program.py && WID=$(xdotool search onlyvisible program) ...
如果program.py应该在运行xdotool命令时继续运行,但是在继续之前需要program.py进入某个就绪状态,那么您使用&是正确的,但是您需要以某种方式监视program.py,并从中得到一个信号,表明可以继续。一种古老的方法是让program.py创建/触摸/编辑一个文件,当检测到该文件时继续。一个更先进的方法是使用网络套接字或类似的,但如果你真的不需要做任何花哨的事情,我建议你不要这样做。不管怎样,如果你让program.py创建一个信号文件,比如说/tmp/.program_signalfile,当一切就绪时,你所要做的就是:
/tmp/.program_signalfile
#!/bin/bash cd ~/Folder python program.py & until [ -f /tmp/.program_signal_file ] do sleep 1 done WID=$(xdotool search onlyvisible program) rm /tmp/.program_signal_file ...
在最后一个解决方案中,program.py和xdotool同时运行。如果那是你要找的。你知道吗
这要看情况了。如果
program.py
应该完成,然后继续xdotool
,那么您可能希望使用&&
而不是&
。一个&
意味着您希望执行命令,然后尽快转到下一个命令,而不必等待它完成。dobule&&
意味着您要等待执行完成,然后只有在零错误退出时才继续。如果要运行下一个命令而不管program.py
是否成功,也可以删除&
或使用;
。我的意思是:如果
program.py
应该在运行xdotool
命令时继续运行,但是在继续之前需要program.py
进入某个就绪状态,那么您使用&
是正确的,但是您需要以某种方式监视program.py
,并从中得到一个信号,表明可以继续。一种古老的方法是让program.py
创建/触摸/编辑一个文件,当检测到该文件时继续。一个更先进的方法是使用网络套接字或类似的,但如果你真的不需要做任何花哨的事情,我建议你不要这样做。不管怎样,如果你让program.py
创建一个信号文件,比如说/tmp/.program_signalfile
,当一切就绪时,你所要做的就是:在最后一个解决方案中,
program.py
和xdotool
同时运行。如果那是你要找的。你知道吗相关问题 更多 >
编程相关推荐