我经常直接在 shell 中使用它来测试脚本的结果,而且效果很好:
$ if [ -d mydirectory ] ; then echo YES ; fi
YES
但是,如果我想使用感叹号来表示否定,则会失败(好吧,不是真的失败了,而是进入多行模式等待键盘输入,我必须使用 Ctrl-C 退出):
$ if [ ! -d makehuman ] ; then echo YES ; if
>
> ^C
$ if [ \! -d makehuman ] ; then echo YES ; if
>
> ^C
如何在 shell 中直接使用否定感叹号?
答案1
这是一个语法错误,上述命令应该以fi
not结尾if
$ if [ ! -d mydirectoryNO ] ; then echo YES ; fi
YES
无论如何,我还发现了这个很好的相关链接:经典测试命令[Bash Hackers Wiki]
答案2
在 Bash 命令行中,感叹号可以用反斜杠转义,就像所有特殊字符一样。if
不过,不要忘记正确的语法!
$ if [ \! -d mydirectory ]; then echo Yay; else echo Nay; fi