Пытаться:
my_command || { echo 'my_command failed' ; exit 1; }
Четыре изменения:
- Изменить
&&на||
- Используйте
{ }вместо( )
- Ввести
;после exitи
- пробелы после
{и до}
Так как вы хотите напечатать сообщение и выйти только в случае сбоя команды (выход с ненулевым значением), вам не нужно ||указывать &&.
cmd1 && cmd2
будет работать cmd2при cmd1успешном завершении (выходное значение 0). В то время как
cmd1 || cmd2
будет работать cmd2при cmd1сбое (выходное значение ненулевое).
Использование ( )заставляет команду внутри них запускаться в под-оболочке, а вызов exitоттуда приводит к выходу из под-оболочки, а не к исходной оболочке, следовательно, выполнение продолжается в исходной оболочке.
Чтобы преодолеть это использование { }
Последние два изменения требуются bash.