Linux 查找命令的退出状态始终显示成功

exit status for Linux find command always shows success

我打算在脚本中使用 Linux "find" 命令。如果 "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 的退出状态,在这两种情况下,无论是找到还是没有找到可执行文件

当找不到指定文件时,

find 不会改变退出状态。您可以将其输出通过管道传输到 grep 以检查它是否输出任何内容:

if find /usr/bin /usr/sbin /bin /sbin -name ntpd | grep -q ^ ; then
    echo Found
else
    echo Not found
fi