Ответ 1
;;
используется только в конструкциях case
, чтобы указать конец альтернативы. (Здесь присутствует break
в C.)
case $answer in
yes) echo 'yay!';;
no) echo 'boo!';;
esac
Синтаксически, ;
и &
оба означают конец команды. Новая строка эквивалентна ;
в первом приближении. Разница между ними заключается в том, что ;
или новая строка указывает, что команда должна выполняться на переднем плане, тогда как &
указывает, что команда должна выполняться в фоновом режиме.
Итак, вам нужно & wait
. & ;
является синтаксической ошибкой (у вас не может быть пустой команды). & ;;
также является синтаксической ошибкой; пепел отпускает (как будто вы написали только &
), но bash жалуется. Очевидно, что ваш sh является некоторым вариантом пепла (например, тире, которая /bin/sh
для многих производных Debian).