web-dev-qa-db-ja.com

シェルスクリプトの実行後にMacの「.command」ファイルを自動的に終了するにはどうすればよいですか?

私のシェルスクリプトでは、最後の行は次のとおりです。

...
echo "$l" done
done

exit

ターミナル設定を「シェルが終了したとき:ウィンドウを閉じる」に設定しています。それ以外の場合は、ターミナルで「exit」または「logout」と入力するとウィンドウが閉じますが、この「.command」ファイル(シェルスクリプトファイルをダブルクリックするとスクリプトが実行されます)では、代わりにウィンドウを閉じると、ファイルのコードに「終了」と表示されますが、画面に表示されるのは次のとおりです。

...
$l done
logout

[Process completed]

...そしてウィンドウは開いたままです。シェルスクリプトを実行し、完了時にターミナルウィンドウを自動的に終了する方法を知っている人はいますか?

ありがとう!

22
LOlliffe

私はついにこれに対する答えを突き止めることができました。 cobbalの答えと同様に、AppleScriptを呼び出しますが、これが私が開いている唯一のウィンドウであり、スクリプトをすばやく開閉する操作として実行したいので、このより野蛮なアプローチは私にとってはうまく機能します。

「.command」スクリプト自体の中で、「...この行をスクリプトの最後に追加してください」

osascript -e 'tell application "Terminal" to quit' &
exit

出典: http://forums.macosxhints.com/archive/index.php/t-2538.html

26
LOlliffe

これは私にとって完璧に機能しました..他のターミナルウィンドウを開いたまま、その実行ウィンドウを閉じるだけです

ターミナルを開いて、[ターミナル]> [設定]> [設定]> [シェル]に移動します:>シェルが終了したとき:->シェルが正常に終了した場合は閉じます

次に、exitを追加します。ファイルの最後に。

19
Sagar Patil

上記の「ターミナル」>「設定」>「設定」>「シェル:>シェルが終了したとき:->「シェルが正常に終了した場合は閉じる」」オプションを使用しますが、

exit 0

コマンドファイルの最後の行として。これにより、スクリプトが実際に「正常に終了」することが保証されます。そうしないと、前のコマンドが成功を返さない場合、ウィンドウは閉じません。

4
pooroldpedro

スクリプトで次のコマンドを使用しています

quit-nターミナル

もちろん、閉じる前にプロンプ​​トを表示しないように端末を設定する必要があります。

0
user1486343

ターミナルアプリケーションには、この設定があります。残念ながら、これは.commandファイルを介して起動されたウィンドウだけでなく、すべてのターミナルウィンドウに関連しています。

0
mouviciel

あなたはこれのためにいくつかのapplescriptハッキングを使うことができます:

tell application "Terminal"
    repeat with i from 1 to number of windows
        if (number of (tabs of (item i of windows) whose tty is "/dev/ttys002")) is not 0 then
            close item i of windows
            exit repeat
        end if
    end repeat
end tell 

/dev/ttys002をあなたのttyに置き換える

0
cobbal

上記のAppleScriptソリューションを使用する必要があることを除けば、これは私にとって(OS X 10.9でテストされた)突然であっても機能した(exitは機能しなかった)唯一のシェルスクリプトソリューションです。

...
echo "$l" done
done

killall Terminal

もちろん、これにより実行中のすべてのターミナルインスタンスが強制終了されるため、スクリプトを起動する前にターミナルウィンドウで作業していた場合は、スクリプトも終了します。幸い、Terminalを再起動すると「復元済み」状態になりますが、それでも、これはEdgeの場合にのみ考慮し、クリーンなソリューションとしては考慮しないでください。

0
user2188875