简体   繁体   中英

How to run shell scripts in series in terminal windows in Mac OS X

In my Desktop/src/ directory I have shell scripts that I want to run in a series and some must run after the first has completed running and all the commands must run on new terminal window. I am working on Mac OS X.

So far I have tried the following code

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

The problem is that startRM1.sh takes a little time to start, and startRM2.sh, startRM3.sh start straight away and crash since they must wait for startRM1.sh to complete All three of them must start in new window.

Edit: startRM1.sh is a server which keeps running; therefore the control never goes to the second step.

problem solved using following

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

Create a shellscript that is your start point.

You can create a .sh file that would could call:

source mynewShell.sh

and in that, it will have all the other files, called in the orders you need, and any config data etc

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM