在 bash 中运行以下命令:
stuff=`rpm -ql <some package> | grep dasdasdfd`
(包中不存在的文件,退出代码 = 1,标准输出为空)
if [ -f $stuff ]; then echo "whaaat"; fi
上述命令用于检查文件是否存在,但是:
file $stuff
打印文件的使用信息...等
stat $stuff
缺少操作数...
请问有人能解释一下为什么会出现这种情况吗?这是一个bug吗?还是我做错了什么?我只是想确保包中的文件存在于文件系统中。
[ -f
或test -f
在没有参数的情况下返回0吗?文档似乎并没有提到这种情况。 - Michael Jaros[ 字符串 ]
被解释为[ -n 字符串 ]
。[ -f ]
等价于[ -n -f ]
,始终为真:因为-f
不是空字符串。 - John Kugelman