Существует ли стандартная команда, которая всегда завершается с ошибкой?


42

Я хочу проверить свой сценарий с помощью команды, которая не работает. Я мог бы использовать существующую команду с плохими аргументами. Я также мог бы написать простой скрипт, который сразу же завершается с ошибкой. И то, и другое легко и работает для меня, но если для этого есть стандартная команда, я бы хотел использовать ее вместо этого.


false, но также любая несуществующая команда.
Кусалананда

Ответы:


51

Вы можете использовать false( /bin/false, /usr/bin/falseили оболочку встроенный):

$ false || echo It failed.
It failed.
$

Вы также можете использовать exit 1из подоболочки:

$ (exit 1) || echo Gosh, it failed too.
Gosh, it failed too.
$

Кроме того, вы можете мобильно позвонить на выезд с любого номера в диапазоне 1-255 включительно. (Большинство оболочек применяют операцию по модулю 255 к любым другим числам, указанным для выхода, поэтому на практике вы можете обходиться без других чисел, хотя они просто приводятся в вышеупомянутый диапазон. Но некоторые оболочки выполняют другие действия, например, выход с синтаксическая ошибка (все еще состояние ошибки), если вызывается с отрицательным значением. Unix-подобные системы поддерживают только коды выхода в диапазоне 0-255 включительно, поэтому нельзя полагаться на четко определенное поведение для других заданных значений выйти во всех снарядах.)
mtraceur

1
И как небольшая мелочь, если вам не нужна переносимость для действительно старых / неясных оболочек, вы также можете это сделать ! :(или любую другую команду, которая обычно возвращает успех). !говорит об отмене статуса выхода команды, которая следует. :это просто встроенная команда noop, которая всегда завершается с успехом. (Просто не забудьте оставить пробел после !и до отмены команды, в противном случае она попытается проанализировать ее как одну команду, начинающуюся с !символа - или в случае оболочек, как bashв интерактивном режиме, она будет проанализирована как одна из эти специальные модификаторы истории.)
mtraceur
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.