Я замаскировал страницу руководства для поиска, и -quit
, кажется, частично выполняет то, что я хочу, за исключением того, что это приведет только к тому, что find
будет возвращать ненулевое значение, если произошла ошибка. Итак, как можно заставить find
возвращать ненулевое значение или, по крайней мере, подделываться, возвращая ненулевое значение, которое может быть доступно для поддерживающих? До сих пор у меня этот пример:find: Как заставить ненужный статус выхода
$ find . -maxdepth 2 -type f \(-exec echo {} \; -o \(-printf "FAIL\n" -a -quit \) \)
./scooby
./shaggy
./velma
./daphne
./fred
$ echo $?
0
Но если я заменю эхо с вызовом ложными, я получаю желаемый ранний выход, но не код ненулевой выходы:
$ find . -maxdepth 2 -type f \(-exec false {} \; -o \(-printf "FAIL\n" -a -quit \) \)
FAIL
$ echo $?
0
Обновления:
Я пытаюсь найти find, чтобы вернуть ненулевое значение, когда -exec
возвращает false, т.е. команда, которая выполняла, возвратила ненулевое значение. В настоящее время find
просто преобразует ненулевой вызов -exec
в логическое состояние, которое будет использоваться как часть выражения find
.
$ find . -maxdepth 2 -type f \(-exec chmod a+x {} \; -o \(-printf "FAIL\n" -a -quit \) \)
В настоящее время он не будет возвращать ненулевое значение, если сбой chmod. Я хочу, чтобы иметь возможность возвращать ненулевое значение, если chmod не удается, а также выйти раньше, что он уже делает, используя -quit
.
Чего вы пытаетесь достичь (путем возврата ненулевого кода выхода)? – devnull
У меня есть вопрос. – Craig
Итак, цель выхода рано, когда 'chmod' терпит неудачу или есть еще больше? – devnull