2014-09-09 7 views

ответ

7

|| является булевым или.

: - команда no-op, которая ничего не делает и выходит с правдивым статусом.

Таким образом, anything || : безоговорочно возвращает true.

Таким образом, some_command_that_may_fail ||: всегда будет успешным.

Это важно, если используется set -e или ERR-ловушка, но вы не хотите, чтобы ваш скрипт вышел или вызвал ошибку, если команда не удалась.

+0

Ничего себе, поэтому это должно быть запрещено тогда :) это хуже пустых блоков try-catch. Благодаря! – theMarceloR

+2

Почему запрещено? Иногда вам действительно все равно, если команда терпит неудачу. Например, 'grep' терпит неудачу, если он не находит совпадения, но вы не можете считать, что ошибка в вашем скрипте, поэтому' grep string file.txt || : 'предотвратит запуск скрипта. – chepner

+1

@theMarceloR, я бы не сказал худшего - он очень явственен в строчном порядке, и иногда его требуют. Если вы используете код обработки ошибок, то иногда вам действительно нужно/нужно провалиться и продолжить очистку, если его часть не удалась. –

2

: двоеточие Noop, двойная труба является операция ИЛИ, так что ...

выполнить some_command ИЛИ (в случае some_command не может) выполнить: (который не является никакой операции)

|| означает выполнение второго, только если первая команда команды завершилась с ошибкой. В этом случае вторая команда означает «ничего не делать»

+1

Не совсем «ничего не делать»: установите статус выхода в «true», –

Смежные вопросы