如下一个简单的脚本
#!/bin/sh
number=1
if [ $number = "1" ]; then
echo "Number equals 1"
else
echo "Number does not equals 1"
fi
但是,我们经常有这样的经历,提示 “ [: =: unary operator expected” 错误
但又苦于不知道脚本语言如何调试,只能考经验来判断, 以修改脚本。
现在可以通过如下方法来调试了
具体如下:
在脚本最开始处中,添加 "-x" 即可,如下:
#!/bin/sh -x
然后在运行会提示
blwang@blwang-desktop:~$ ./test.sh
+ number=
+ '[' = 1 ']'
./test.sh: line 5: [: =: unary operator expected
+ echo 'Number does not equals 1'
Number does not equals 1
看到这个就很明显的看到第5行存在的问题。然后修改后,再运行如下:
blwang@blwang-desktop:~$ ./test.sh
+ number=1
+ '[' 1 = 1 ']'
+ echo 'Number equals 1'
Number equals 1
你也可以使用set命令来开启或关闭脚本的执行跟踪,
如:set -x 开启脚本跟踪
set +x 关闭脚本跟踪
修改上面的程序:
#!/bin/sh
number=1
set -x
if [ $number = "1" ]; then
echo "Number equals 1"
else
echo "Number does not equals 1"
fi
set +x
blwang@blwang-desktop:~$ ./test.sh
+ '[' 1 = 1 ']'
+ echo 'Number equals 1'
Number equals 1
+ set +x