Shell代碼如下:
if ["1"="2"]; then
echo "a"
else
echo "b"
fi
(1)報(bào)錯:
Syntax error near unexpected token `fi'
原因:
換行符在各操作系統(tǒng)中是不同的:
windows:\r\n
unix:\n
mac:\r
所以掺栅,以上包含換行符的命令行冗澈,
在unix中執(zhí)行,會有多余的\r
字符。
處理方法一:
安裝dos2unix闸餐,
$ dos2unix 1.sh
處理方法二:
把所有的\r
都刪掉饱亮,
$ cat < 1.sh | tr -d '\r' > 2.sh
(2)還是會報(bào)錯:
[1=2]: Command not found
原因:
條件“[]
”中括號內(nèi),要加空格舍沙。
處理:
["1"="2"] => [ "1"="2" ]
(3)結(jié)果錯誤:
條件判斷沒有生效近上,
執(zhí)行了echo "a"
原因:
字符串的邏輯判斷“=
”兩邊需要加空格。
處理:
[ "1"="2" ] => [ "1" = "2" ]
注意:
字符串如果不包含空格拂铡,可以省略雙引號壹无。
如果是數(shù)字比較,不能使用“<
”“>
”感帅,而應(yīng)該使用“-lt
”“-gt
”斗锭。