![](/img/trans.png)
[英]How do I get a python script to run a command shell in Windows (10) where it opens in a program specific location?
[英]I run a program in a shell script. How do i know if it has loaded? (Linux)
我寫了一個運行python程序的shell腳本。 然后,我想使用xdotool將文件加載到程序中。 現在,這是我的代碼:
#!/bin/bash
cd ~/Folder
python program.py &
sleep 10
WID=$(xdotool search --onlyvisible program)
....
我真的不喜歡僅等待10秒鍾以便加載程序的解決方案。 有沒有更好的辦法?
這真的取決於。 如果program.py
應該完成,請繼續使用xdotool
然后您可能要使用&&
而不是&
。 單個&
表示您希望命令執行,然后盡快移至下一個命令,而無需等待其完成。 浮雕&&
表示您要等待執行完成,然后僅在錯誤出口為零時才繼續執行。 您也可以只刪除&
或使用;
如果您要運行下一個命令,而與program.py
的成功無關。 這就是我要得到的:
#!/bin/bash
cd ~/Folder
python program.py &&
WID=$(xdotool search --onlyvisible program)
...
如果應該在運行xdotool
命令時繼續運行program.py
,但是在繼續之前需要program.py
處於某種就緒狀態,那么您就可以正確地使用&
,但是您需要以某種方式監視program.py
,並從中獲得可以繼續的信號。 一種古老的做法是讓program.py
創建/觸摸/編輯文件,然后在檢測到該文件時繼續。 一種更高級的方法是使用網絡套接字或類似的套接字,但是如果您真的不需要做任何花哨的事情,我建議您使用它。 無論如何,如果讓program.py
創建一個信號文件,說/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
都同時運行。 如果那是您想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.