私のシェルスクリプトでは、最後の行は次のとおりです。
...
echo "$l" done
done
exit
ターミナル設定を「シェルが終了したとき:ウィンドウを閉じる」に設定しています。それ以外の場合は、ターミナルで「exit」または「logout」と入力するとウィンドウが閉じますが、この「.command」ファイル(シェルスクリプトファイルをダブルクリックするとスクリプトが実行されます)では、代わりにウィンドウを閉じると、ファイルのコードに「終了」と表示されますが、画面に表示されるのは次のとおりです。
...
$l done
logout
[Process completed]
...そしてウィンドウは開いたままです。シェルスクリプトを実行し、完了時にターミナルウィンドウを自動的に終了する方法を知っている人はいますか?
ありがとう!
私はついにこれに対する答えを突き止めることができました。 cobbalの答えと同様に、AppleScriptを呼び出しますが、これが私が開いている唯一のウィンドウであり、スクリプトをすばやく開閉する操作として実行したいので、このより野蛮なアプローチは私にとってはうまく機能します。
「.command」スクリプト自体の中で、「...この行をスクリプトの最後に追加してください」
osascript -e 'tell application "Terminal" to quit' &
exit
出典: http://forums.macosxhints.com/archive/index.php/t-2538.html
これは私にとって完璧に機能しました..他のターミナルウィンドウを開いたまま、その実行ウィンドウを閉じるだけです
ターミナルを開いて、[ターミナル]> [設定]> [設定]> [シェル]に移動します:>シェルが終了したとき:->シェルが正常に終了した場合は閉じます
次に、exitを追加します。ファイルの最後に。
上記の「ターミナル」>「設定」>「設定」>「シェル:>シェルが終了したとき:->「シェルが正常に終了した場合は閉じる」」オプションを使用しますが、
exit 0
コマンドファイルの最後の行として。これにより、スクリプトが実際に「正常に終了」することが保証されます。そうしないと、前のコマンドが成功を返さない場合、ウィンドウは閉じません。
スクリプトで次のコマンドを使用しています
quit-nターミナル
もちろん、閉じる前にプロンプトを表示しないように端末を設定する必要があります。
ターミナルアプリケーションには、この設定があります。残念ながら、これは.commandファイルを介して起動されたウィンドウだけでなく、すべてのターミナルウィンドウに関連しています。
あなたはこれのためにいくつかの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に置き換える
上記のAppleScriptソリューションを使用する必要があることを除けば、これは私にとって(OS X 10.9でテストされた)突然であっても機能した(exit
は機能しなかった)唯一のシェルスクリプトソリューションです。
...
echo "$l" done
done
killall Terminal
もちろん、これにより実行中のすべてのターミナルインスタンスが強制終了されるため、スクリプトを起動する前にターミナルウィンドウで作業していた場合は、スクリプトも終了します。幸い、Terminalを再起動すると「復元済み」状態になりますが、それでも、これはEdgeの場合にのみ考慮し、クリーンなソリューションとしては考慮しないでください。