Команда выхода из 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