当我表演时
find /tmp -name something
find 命令未在 /tmp 下找到某些单词
echo $?
I get $?=0
没关系
但是当 find 命令找不到某个单词时,如何启用退出状态差异然后 0?
答案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)
如果未找到任何内容则循环将退出而不执行任何操作。
答案2
我感觉这个是最简洁直接的方法:
test "`find /tmp/ -name something -print -quit 2>/dev/null`"