Testing against -n option in BASH scripts always returns true
我正在编写一个bash脚本,其中我正在尝试检查是否提供了特定的参数。我注意到
1 2 3 4 5 6 7 8 9 | #!/bin/bash if [ -n $1 ]; then echo"The 1st argument is of NON ZERO length" fi if [ -z $1 ]; then echo"The 1st argument is of ZERO length" fi |
我得到的结果如下:
无参数:
1 2 3 | xylodev@ubuntu:~$ ./my-bash-script.sh The 1st argument is of NON ZERO length The 1st argument is of ZERO length |
带参数:
1 2 | xylodev@ubuntu:~$ ./my-bash-script.sh foobar The 1st argument is of NON ZERO length |
我已经发现,用双引号括起来的EDOCX1[1]会给我预期的结果,但是我仍然想知道,为什么两个测试在不使用引号和不使用参数调用脚本时都返回true?那么,似乎
引用它。
1 | if [ -n"$1" ]; then |
没有引号,如果
*如果你给