Я хочу сделать что-то вроде этого:
if cmd1 && cmd2
echo success
else
echo epic fail
fi
как мне это сделать?
bash
shell-script
exit-status
michelemarcon
источник
источник
Ответы:
Они должны делать то, что вам нужно:
или
источник
||
не смотрит на вывод первойecho
команды.Just try whoami && whoami && echo success || echo epic fail
и сейчасwhoami && whoareyou && echo success || echo epic fail
. Я не могу понять, что вы подразумеваете под "не смотрит на вывод первой команды эха"cmd1 && cmd2
Петр Узел на месте, но вы также можете играть с магическим $ ?.
$? содержит код завершения последней выполненной команды, и если вы используете его, вы можете писать свои сценарии достаточно гибко.
Этот вопрос немного затрагивает эту тему. Лучшая практика использования $? в баш? ,
Тогда вы также можете реагировать на разные коды выхода и делать разные вещи, если хотите.
источник
Псевдокод в вопросе не соответствует названию вопроса.
Если кому-то действительно нужно знать, как запустить команду 2, если команда 1 не выполнена, это простое объяснение:
cmd1 || cmd2
: Это будет работатьcmd1
, и в случае сбоя это будет работатьcmd2
cmd1 && cmd2
: Это будет работатьcmd1
, и в случае успеха это будет работатьcmd2
cmd1 ; cmd2
: Это запуститсяcmd1
, а затем запуститсяcmd2
независимо от сбоя или успешности выполненияcmd1
.источник