Я получил ошибку:
bash: синтаксическая ошибка рядом с неожиданным токеном `; '
из-за следующей команды:
evince foo.pdf bar.pdf &; emacs foo.tex &
Это незаконно разделять команды ;
при использовании &
для фона задания? Или есть другая причина, по которой это не сработало?
Спасибо.
if [ $(ps -ef |grep -c '[p]grep') -eq 0 ]; then nohup sleep 5 > /dev/null 2>&1</dev/null & fi
Кстати, основная проблема заключается в том, что (производные от Борна) оболочки не допускают пустых команд.
";" и "&" - это терминаторы команд, что означает fg и bg соответственно. Так "; ;" (или «;» в начале строки) также недопустимо.
(Символы новой строки подразумевают ";", если есть еще не завершенная команда, если только вы не используете "\" для продолжения строки.)
Языки сильно различаются по этим правилам:
Производные от C языки допускают пустые операторы.
Паскаль и PERL имеют разделители, а не терминаторы.
источник
Нет, это просто запутано и не может понять, что вы имеете в виду.
Вам нужно сгруппировать & с командой, которую вы хотите поместить в фон:
Это отлично работает. Еще более явным будет:
Особенно, если вы затем захотите объединить больше команд после конца.
источник