2016-10-02 89 views
0

我经常打开大量终端窗口,每个窗口都有一个ssh会话。为了简化这个过程,我有一系列看起来像这样的shell脚本:如何在运行MacOS shel/Applescript脚本时避免僵尸窗口

#!/bin/sh 
osascript <<EOS 
tell application "Terminal" 
    activate 
    do script "set_background_color salmon; ssh [email protected]" 
end tell 
EOS 

This works。我可以从shell提示符执行脚本,或者在Finder窗口中单击它。 (要做到这一点的文件名后缀为.command,而不是.SH

的问题是,当我从Finder中执行它,我结束了一个死的窗口(“过程已完成”)的背后我打算打开的窗口。有什么方法可以摆脱它,或者没有办法摆脱它呢?

UPDATE:

出现提供确认/审查这other question结果对话框中的解决方案/取消选项。这是不可取的。

+0

可能的重复[如何让Mac“.command”文件在运行shell脚本后自动退出?](http://stackoverflow.com/questions/2565944/how-do-i-get-a -mac-command-file-to-automatically-quit-after-running-a-shell -s) –

+0

@ AlexanderO'Mara另一个问题的解决方案对我无效。我尝试的每个变体都会弹出一个对话框,以确认关闭此窗口或其他窗口。 – AlanObject

回答

1

当您双击一个.command文件时,该文件被传递给终端,终端会创建一个窗口并执行其中的命令。 .command文件中的命令使用AppleScript来告诉终端在另一个窗口中运行命令。

为什么不删除中间人,只是把你想运行的最终命令 - set_background_color salmon; ssh [email protected] - 在.command文件中?通过运行AppleScript来删除这些东西。换句话说,你的.command文件的内容应该仅仅是:

set_background_color salmon 
ssh [email protected] 

或者,你可以从你的.command文件(<<EOSEOS之间的部分)采取的AppleScript,把它变成脚本Editor.app ,并将其保存为一个小程序。

+0

您的答案效果不错(简单就好了!),这是我现在要使用的。我试图使用Applescript的原因是,我想最终打开窗口编程 - 只需点击一下打开一整套类似于“打开窗口组”的菜单选项,除了已经建立的连接。这可以稍后等待。 – AlanObject