如何在Mac OS X的终端窗口中串行运行shell脚本

时间:2014-06-04 12:57:35

标签: macos bash shell unix

在我的Desktop/src/目录中,我有一些我希望在一系列中运行的shell脚本,一些必须在第一个完成运行后运行,所有命令必须在新的终端窗口上运行。我正在使用Mac OS X.

到目前为止,我已尝试过以下代码

osascript<<EOF
tell application "System Events"
tell process "Terminal" to keystroke "n" using command down
end

tell application "Terminal"
activate
do script with command "cd Desktop/src/ && sh startRM1.sh"
end tell

tell application "Terminal"
activate
do script with command "cd Desktop/src/ && sh startRM2.sh"
end tell

tell application "Terminal"
activate
do script with command "cd Desktop/src/ && sh startRM3.sh"
end tell
EOF

问题是startRM1.sh需要一点时间才能启动,startRM2.sh,startRM3.sh会立即启动并崩溃,因为他们必须等待startRM1.sh完成 所有这三个都必须从新窗口开始。

编辑:startRM1.sh是一个继续运行的服务器;因此控制永远不会进入第二步。

使用以下

解决了问题
osascript<<EOF
tell application "System Events"
tell process "Terminal" to keystroke "n" using command down
end

tell application "Terminal"
activate
do script with command "cd Desktop/src/ && sh startRM1.sh" in window 1
end tell

tell application "Terminal"
activate
do script with command "sleep 5 && cd Desktop/src/ && sh startRM2.sh"
end tell

tell application "Terminal"
activate
do script with command "sleep 5 && cd Desktop/src/ && sh startRM3.sh"
end tell
EOF

1 个答案:

答案 0 :(得分:0)

创建一个作为起点的shellcript。

您可以创建一个可以调用的.sh文件:

source mynewShell.sh

并且在那里,它将包含所有其他文件,在您需要的订单中调用,以及任何配置数据等