Никогда не приходилось копаться в синтаксисе командной строке уникс подобных операционных систем, а вот понадобилось решить задачку по асинхронному выполнению команд. Суть такова, есть 3 команды, две независимы, а третью нужно запустить только если предыдущие отработали удачно.
перечитал уйму материала по этому вопросу, перепробывал кучу способов, вплоть до попытки напрограммировать что-то на sh, но чувствовал что есть простой и красивый способ, и не ошибся (это самый простой вариант который даже работает, есть с чем сравнивать, предыдущие были намного сложнее и не работали :().

#!/bin/sh -e


{ COMAND1& } && COMMAND 2 && wait %1 && COMMAND 3
#где COMMAND${i} нужные команды