我得到以下輸出:測試! -a總是成功的文件是否存在
$ touch bar
$ if [ -a bar ]; then echo "Yes"; fi
Yes
$ if [ ! -a bar ]; then echo "Yes"; fi
Yes
$ rm bar
$ if [ -a bar ]; then echo "Yes"; fi
$ if [ ! -a bar ]; then echo "Yes"; fi
Yes
我預計,第二個命令不應打印「是」,因爲! -a
應該是-a
相反。出了什麼問題?
使用-f
而不是-a
確實表現得如我所料。
版本號是GNU bash, version 4.3.42(3)-release (i686-pc-cygwin)
。
在'bash'和'sh'中''表達式''內的選項'-a'可以被評估爲'邏輯和''',例如'if [-f/tmp/test -a -f/tmp/other];回聲確定; fi'。 – alvits
@alvits我明白了。我從[這個線程](http://stackoverflow.com/questions/5553352/how-do-i-check-if-file-exists-in-makefile)使用'-a'的想法,這足夠好了不提這個問題:) –