Одна команда find
выместит все файлы с абсолютным путем
find $(pwd) -type f
bc
реализации немного различаются по статусу возврата, но общая идея заключается в том, что если вы предоставляете действительный ввод, то bc
завершается со статусом 0. 42/0
является допустимым вводом: нет ошибки чтения, и это даже синтаксически допустимое выражение, поэтому bc
возвращает 0. Если вы передали вторую строку с другая операция, bc
выполнит ее. Это отличается от expr
, цель которого - вычислить одно арифметическое выражение; здесь результат этого единственного выражения определяет статус возврата.
Самый простой способ создать статус выхода, указывающий на сбой, - это вызвать false
. Такие вещи, как expr 1/0
, имеют свое место только в соревнованиях по запутанному программированию.
См. Спецификацию ; это ожидаемое поведение.
Все входные данные были правильно прочитаны bc
, поэтому был получен статус выхода 0.
Если вы запустите bc
для несуществующего файла, например bc nosuchfile
, вы получите другой статус выхода.
Чтобы проиллюстрировать ненулевой статус выхода, я бы либо сравнил ls somefile
и ls nosuchfile
], либо я бы показал, как обычно используются статусы выхода 1 и 2 (1 для ожидаемая ошибка или состояние отказа, 2 для непредвиденной ошибки), например:
$ echo hello > file1
$ echo hello > file2
$ echo goodbye > file3
$ cmp -s file1 file2
$ echo $?
0
$ cmp -s file1 file3
$ echo $?
1
$ cmp -s file1 file4
$ echo $?
2
$