shell指令碼中字串比較經常遇到的乙個問題

2021-08-27 15:35:52 字數 998 閱讀 4023

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 最...