1. 大於小於符號必須轉義,否則shell會把他們當作重定向符合而把字串值當作檔名,如果不注意,可能刀子乙個不易察覺的嚴重問題。
編寫**測試下:
root@wl-ms-7673:~# chmod u+x badtest
root@wl-ms-7673:~# ./badtest
baseball is greater than hockey
root@wl-ms-7673:~# cat -n badtest
1 #!/bin/bash
2 val1=baseball
3 val2=hockey
4 5 if [ $val1 > $val2 ]
6 then
7 echo "$val1 is greater than $val2"
8 else
9 echo "$val1 is less than $val2"
10 fi
11 root@wl-ms-7673:~#
shell把大於號當作了重定向,得到裡錯誤結果,修改大於號轉義後測試
root@wl-ms-7673:~#
root@wl-ms-7673:~# gedit badtest
root@wl-ms-7673:~# ./badtest
baseball is less than hockey
root@wl-ms-7673:~# cat badtest
#!/bin/bash
val1=baseball
val2=hockey
if [ $val1 \> $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
firoot@wl-ms-7673:~#
轉義後結果正確。
shell指令碼字串 數值比較
eq 等於,如 if a eq b ne 不等於,如 if a ne b gt 大於,如 if a gt b ge 大於等於,如 if a ge b lt 小於,如 if a lt b le 小於等於,如 if a le b 小於 需要雙括號 如 a b 小於等於 需要雙括號 如 a b 大於 需要...
shell 字串比較
比較兩個字串是否相等的辦法是 if test x test x then 這裡的關鍵有幾點 1 使用單個等號 2 注意到等號兩邊各有乙個空格 這是unix shell的要求 3 注意到 test x最後的x,這是特意安排的,因為當 test為空的時候,上面的表示式就變成了x testx,顯然是不相等...
shell比較字串
比較兩個字串是否相等的辦法是 if test x test x then 這裡的關鍵有幾點 1 使用單個等號 2 注意到等號兩邊各有乙個空格 這是unix shell的要求 3 注意到 tes t x最 後的x,這是特意 安排的,因為 當test x最後的x,這是特意安排的,因為當 test x 最...