![脚本执行后自动关闭终端](https://linux22.com/image/1315830/%E8%84%9A%E6%9C%AC%E6%89%A7%E8%A1%8C%E5%90%8E%E8%87%AA%E5%8A%A8%E5%85%B3%E9%97%AD%E7%BB%88%E7%AB%AF.png)
如何在脚本执行后自动关闭终端?
#!/bin/bash
cd ~/Desktop/sh-scripts/
./start.sh &
// ??? how to close Terminal
答案1
假设您在另一个 shell 中调用您发布的此脚本代码。如果您希望退出 Terminal.app,则可以使用一个简单的苹果脚本命令:
osascript -e 'tell application "Terminal" to quit'
iTerm2 或任何其他应用程序也是如此。只需在 中更改其名称即可"Terminal"
。或者,退出最前面的应用程序,如 @Lri 提到的:
osascript -e 'quit app (path to frontmost application as text)'
如果您的脚本以非交互方式运行,那么它就足够了exit
。除非您更改终端的设置,否则终端窗口不会关闭:
答案2
如果你想要你的 bash 脚本(例如你的可执行文件.sh文件)杀脚本执行完成后,在 OS X 终端应用程序中,只需将这一行添加到脚本末尾:
kill `ps -A | grep -w Terminal.app | grep -v grep | awk '{print $1}'`
答案3
在 Linux 上,可以使用如下脚本来仅终止正在打开的终端,而不是全部终端:
#!/bin/bash -e
function kill_open_terminal {
local child_pid=$1
if [[ $child_pid == 1 ]]; then
return 1
fi
local parent_pid=$(ps -p $child_pid -o ppid=)
if [[ $child_pid == $parent_pid ]]; then
return 1
fi
local parent_command=$(ps -p $parent_pid -o comm= | tr '[:upper:]' '[:lower:]')
if [[ -n $parent_command ]] && [[ $parent_command == *term* ]]; then
kill $parent_pid
else
kill_open_terminal $parent_pid
fi
}
kill_open_terminal $$ || {
echo "Unable to find open terminal to close"
}```
Just change the tk_parent_command part to match the macOS terminal commands