Shell代码如下:
if ["1"="2"]; then
echo "a"
else
echo "b"
fi
(1)报错:
Syntax error near unexpected token `fi'
原因:
换行符在各操作系统中是不同的:
windows:\r\n
unix:\n
mac:\r
所以,以上包含换行符的命令行,
在unix中执行,会有多余的\r
字符。
处理方法一:
安装dos2unix,
$ dos2unix 1.sh
处理方法二:
把所有的\r
都删掉,
$ cat < 1.sh | tr -d '\r' > 2.sh
(2)还是会报错:
[1=2]: Command not found
原因:
条件“[]
”中括号内,要加空格。
处理:
["1"="2"] => [ "1"="2" ]
(3)结果错误:
条件判断没有生效,
执行了echo "a"
原因:
字符串的逻辑判断“=
”两边需要加空格。
处理:
[ "1"="2" ] => [ "1" = "2" ]
注意:
字符串如果不包含空格,可以省略双引号。
如果是数字比较,不能使用“<
”“>
”,而应该使用“-lt
”“-gt
”。