Команда выхода из Linux команда find всегда показывает успех

Я намереваюсь использовать команду Linux "найти" внутри скрипта. Меня просто беспокоит, если команда "find" находит исполняемый файл по любому из упомянутых путей, а не по точному пути. Я тестирую ниже:

find /usr/bin /usr/sbin /bin /sbin -name ntpd > /dev/null 2>&1; echo $?
0

find /usr/bin /usr/sbin /bin /sbin -name ntp > /dev/null 2>&1; echo $?
0

find /usr/bin /usr/sbin /bin /sbin -name ntpd
/usr/sbin/ntpd

# find /usr/bin /usr/sbin /bin /sbin -name ntp
#

Почему find давая статус выхода 0в обоих случаях, находит или не находит исполняемый файл

1 ответ

Решение

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

if find /usr/bin /usr/sbin /bin /sbin -name ntpd | grep -q ^ ; then
    echo Found
else
    echo Not found
fi
Другие вопросы по тегам