когда я выполняю
find /tmp -name something
команда find не находит слово что-то в /tmp
echo $?
I get $?=0
все нормально
но как включить различие статуса выхода затем 0, когда команда find не находит слово что-то?
когда я выполняю
find /tmp -name something
команда find не находит слово что-то в /tmp
echo $?
I get $?=0
все нормально
но как включить различие статуса выхода затем 0, когда команда find не находит слово что-то?
Я чувствую, что это самый лаконичный и прямой метод:
test "`find /tmp/ -name something -print -quit 2>/dev/null`"
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)
Если ничего не найдено, цикл завершится, ничего не делая.