2

когда я выполняю

  find /tmp  -name something 

команда find не находит слово что-то в /tmp

  echo $?

  I get $?=0

все нормально

но как включить различие статуса выхода затем 0, когда команда find не находит слово что-то?

2 ответа2

1

Я чувствую, что это самый лаконичный и прямой метод:

test "`find /tmp/ -name something -print -quit 2>/dev/null`"
1

find возвращает 0, если он работает успешно, и ненулевой, если есть ошибки. Он не устанавливает код выхода в зависимости от того, было ли что-либо найдено. Вам нужно будет сделать что-то вроде этого:

files=$(find /tmp  -name something)
if [[ -n "$files" ]]
then
    echo "files were found"
fi

Однако более вероятно, что вы захотите что-то сделать с именами файлов. Вы можете обработать их в цикле:

find /tmp  -name something | while read -r filename
do
    echo "found: $filename
done

или же

while read -r filename
do
    echo "found: $filename
done < <(find /tmp  -name something)

Если ничего не найдено, цикл завершится, ничего не делая.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .