我在 AppleScript 中使用命令列應用程式,我需要腳本等待行程完成運行,然后再繼續。(是的,我希望終端打開并查看應用程式運行。)
我根據現有問題撰寫了這段代碼:
activate application "Terminal"
tell application "System Events"
repeat until visible of process "Terminal" is true
end repeat
end tell
tell application "System Events" to keystroke "app_name option"
tell application "System Events" to keystroke return
delay 2
set thePID to do shell script "app_name option > /dev/null 2>&1 & echo $!"
repeat
do shell script "ps ax | grep " & thePID & " | grep -v grep | awk '{ print $1 }'"
if result is "" then exit repeat
delay 2
end repeat
-- more code...
一切都在我的腳本中作業,除了我需要它等待命令列應用程式完成的部分。
我怎樣才能使這項作業?開頭的部分到底是set thePID做什么的?
uj5u.com熱心網友回復:
為了讓它正常作業,我洗掉了:
set thePID to do shell script "app_name option > /dev/null 2>&1 & echo $!"
然后在repeat我改變下:
do shell script "ps ax | grep " & thePID & " | grep -v grep | awk '{ print $1 }'"
至:
do shell script "ps ax | grep app_name | grep -v grep | awk '{ print $1 }'"
現在我的腳本可以按我的意愿作業了!
問題是我在腳本中通過按鍵呼叫應用程式,然后基本上通過運行set thePID to do shell script "app_name option > /dev/null 2>&1 & echo $!".
我認為答案可能類似于tell application "System Events" to keystroke "app_name option > /dev/null 2>&1 & echo $!".
我正在運行該程式的第二個實體,因為我不清楚如何正確利用我鏈接到的舊帖子中給出的示例。
所以我四處尋找如何PID在終端中獲取正在運行的程式,我發現這grep app_name是一個常見的難題。與ps -ax...相同
所以我按照自己的假設,洗掉了要求程式再次運行的變數,并簡單地將該程式的名稱插入到grep替換變數的字串部分中。它奏效了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/485031.html
下一篇:使用AWK比較同一列中的值
