How to wait for an app to quit in a macOS bash script
Shortcuts now runs on macOS since the Monterey release and there’s always been AppleScript as well. However, I just still prefer the simpler bash scripts for all the automation of tasks. You can pretty much do anything on the terminal, like when you need to perform more complex conditions, such as waiting for an app to quit before continuing with the rest of the script.
Wait for an app to quit in a macOS bash script
With Linux, you can use the jobs command to the get PIDs and then use wait with the PID. But on macOS, it’s a lot simpler to do get this done. Simply use the –wait-apps parameter with your open command. That’s it!
open --wait-apps /path-to/the-app
Here’s an example of how I’ve used it to in one of my automation steps for my kids to play multiplayer minecraft on a single Microsoft account.
networksetup -setairportpower en0 on echo "### Launching Minecraft and waiting for it to quit" open --wait-apps /Applications/Minecraft.app echo "### Minecraft app quit. Continuing with the rest of the script" echo "### Changing user to ##########" sed -i '' 's/ExistingProfileName/NewProfileName/g' ~/Library/Application\ Support/minecraft/launcher_accounts.json networksetup -setairportpower en0 off open /Applications/Minecraft.app
In the script above, the open –wait-apps will launch the app, and you will see the script paused at that point until the app it had opened quits.
As you can see from the example above, this is a really simple yet useful way to automate task where you need to wait for an app to quit in a macOS bash script.
Hope this short little article has been helpful to you in your scripting on macOS!
If this post has been useful, support me by buying me a latte or two 🙂