在我的shell脚本中,我的最后一行是:
...
echo "$l" done
done
exit
我将终端首选项设置为“当shell退出时:关闭窗口”。在所有其他情况下,当我在“终端”中键入“exit”或“logout”时,窗口关闭,但对于此“.command”文件(我可以双击我的shell脚本文件,脚本运行),关闭窗口,当文件的代码显示“退出”时,屏幕上显示的是:
...
$l done
logout
[Process completed]
......窗口仍然打开。有谁知道如何运行shell脚本,然后在完成时自动退出终端窗口?
谢谢!
答案 0 :(得分:23)
我终于能够找到答案。与cobbal的答案类似,它调用AppleScript,但由于它是我打开的唯一窗口,并且我想将脚本作为一个快速的开启和关闭操作运行,这种更粗野的方法对我来说非常有用。 / p>
在“.command”脚本本身中,“...将此行添加到最后的脚本”
osascript -e 'tell application "Terminal" to quit' &
exit
消息来源:http://forums.macosxhints.com/archive/index.php/t-2538.html
答案 1 :(得分:19)
这对我来说非常有用..它只是关闭了执行窗口,让其他终端窗口打开
打开终端,然后转到终端>偏好>设置>壳牌:>当shell退出时: - >如果shell干净利落地关闭
然后只需添加退出;在你的文件的末尾。
答案 2 :(得分:4)
使用'终端>偏好>设置>壳牌:>当shell退出时: - >如果外壳干净利落,请关闭。上面提到的选项,但是把
exit 0
作为命令文件的最后一行。这确保了脚本确实可以“干净利落地”退出。 - 否则如果上一个命令没有返回成功,则窗口不会关闭。
答案 3 :(得分:0)
终端应用程序中有此设置。不幸的是,它与所有终端窗口相关,而不仅仅是通过.command文件启动的窗口。
答案 4 :(得分:0)
你可以使用一些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
用你的tty替换/dev/ttys002
答案 5 :(得分:0)
我在我的脚本中使用以下命令
退出-n终端
当然,您必须将终端设置为在关闭之前永不提示。
答案 6 :(得分:0)
除了必须使用上面的AppleScript解决方案之外,这是唯一有效的shell脚本解决方案(exit
没有),即使突然,对我来说(在OS X 10.9中测试):< / p>
...
echo "$l" done
done
killall Terminal
当然这将终止所有正在运行的终端实例,因此如果您在启动脚本之前处理终端窗口,它也将终止。幸运的是,重新启动终端可以让你进入&#34;恢复&#34;但是,但是,这必须仅考虑边缘情况,而不是一个干净的解决方案。