重击:[-f] && echo 1#什么是正确检查的文件?

Dmi*_*iev 2 bash conditional-statements

当我在表达式中不添加任何文件名时,将检查哪个文件存在并且是常规文件[ -f ] && echo 1

$ [ -f ] &&  echo "1"
1
Run Code Online (Sandbox Code Playgroud)

che*_*ner 5

没有文件被检查。[根据接收到的参数数量来解释其参数(忽略])。

在这种情况下,只有一个参数,-f不是一元运算符。它只是一个非空字符串。这意味着它等效于[ -n -f ],它会成功,因为一元运算符的参数-n确实不是空的。