2

test -e file不够灵活时,我倾向于使用以下 Bash 习惯用法来检查文件是否存在:

if [ -n "$(find ${FIND_ARGS} -print -quit)" ] ; then
   echo "pass"
else
   echo "fail"
fi

但由于我只对布尔值感兴趣,有什么${FIND_ARGS}可以让我代替的:

if find ${FIND_ARGS} ; ...
4

1 回答 1

1

我会说不。man find...

如果所有文件都处理成功,find 以状态 0 退出,如果发生错误,则大于 0。这是特意做一个很笼统的描述,但是如果返回值不为零,就不要依赖 find 结果的正确性。

测试输出可能适合查找。这不是“Bash 习惯用法”。如果这还不够好并且您有可用的 Bash,那么您可以使用extglobs和可能的globstar进行文件匹配测试[[。Find 应该只用于复杂的递归文件匹配,或实际搜索文件,以及其他使用 Bash 功能无法轻松完成的事情。

于 2012-06-28T11:07:09.150 回答