脚本执行后自动关闭终端

脚本执行后自动关闭终端

如何在脚本执行后自动关闭终端?

#!/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

相关内容