Я обычно делаю
command ||:
Статус возврата :
равен нулю.Если command
возвращает ненулевой статус, то выполняется :
, который возвращает нулевой статус.Если command
возвращает нулевой статус, то :
не выполняется.В обоих случаях - статус возврата равен нулю, т.е.успех.
Я видел:
command |:
Ну ... это на один символ короче, но привязка stdout к процессу :
кажется для меня пустой тратой времени процессора.Статус возврата канала - это статус возврата последней выполненной команды, и это :
.Но это может произойти сбой, когда set -o pipefail
, поэтому я бы не рекомендовал его.
Вы можете запустить команду в подоболочке:
( set +e; command; )
это обеспечивает большую гибкость, но вам нужнодобавить (
перед командой и гораздо больше печатать.