4

Applescript アプリケーションでシェル スクリプトを実行し、シェル スクリプトの実行が完了する前に終了することは可能かどうか疑問に思っていました。これは、一定時間サーバーを実行する場合に役立ちます。AppleScript をバックグラウンドで常に実行する必要がある代わりに、関数を独立して実行する方法はありますか?

set server_name to text returned of (display dialog "Choose server." default answer "")
set success to do shell script "if [ -f \"/Users/jessefrohlich/Documents/Minecraft/" & server_name & "/minecraft_server.jar\" ]; then
    echo 1;
else
    echo 0;
fi"
if success is equal to "1" then
    do shell script "cd /Users/jessefrohlich/Documents/Minecraft/" & server_name & "
    java -Xmx1024M -Xms1024M -jar minecraft_server.jar"
else
    display dialog "Sorry, the file you chose is invalid."
end if

上記をアプリケーションとして実行すると、サーバーが正常に起動します。ただし、アプリケーションrunScript.appは引き続き実行されます。AppleScript が強制終了されても、サーバーは実行され続けます。サーバーが起動するとすぐに、自動的に終了する方法はありますか?

ありがとう

4

2 に答える 2

4

これを試して。幸運を。

-- "> /dev/null" redirects standout out to nowhere land
--      - you can use some other file path if you want to capture its output
-- "2>&1" redirects standard error to the same place as standard out
--      - 2 stands for standard error
--      - 1 stands for standard out
--      - > is the redirect symbol
--      - & changes redirect's output from a file to a file descriptor (in this case standard out)
-- & the trailing & sends the process to the background

do shell script "cd /Users/jessefrohlich/Documents/Minecraft/" & server_name & " java -Xmx1024M -Xms1024M -jar minecraft_server.jar > /dev/null 2>&1 &"
于 2012-07-01T22:19:49.897 に答える
1

Applescriptに条件を追加して、「アプリケーションの応答を無視する」ようにすると、終了するなど、AppleScriptにある他のすべての条件に進みます。

Appleサイトに詳細があります:https ://developer.apple.com/library/mac/#documentation/applescript/conceptual/applescriptlangguide/reference/ASLR_control_statements.html

于 2012-07-02T17:02:56.640 に答える