linuxif不等於
1. shell編程中的if判斷語句,為什麼總是輸出「str1 不等於 str2」
字元串的比較問題,
if [ str1 = str2 ]; then
改為:
if [ "$str1" = "$str2" ]; then
變數取值在前面加$,字元串記得加雙引號。
2. shell if函數中幾種條件判斷的區別
1、整數比較:
[plain] view plain
-eq 等於,如:if [ "$a" -eq "$b" ] 或 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" ]
== 等於,如:if if (("$a" == "$b"))
< 小於(需要雙括弧),如:(("$a" < "$b"))
<= 小於等於(需要雙括弧),如:(("$a" <= "$b"))
> 大於(需要雙括弧),如:(("$a" > "$b"))
>= 大於等於(需要雙括弧),如:(("$a" >= "$b"))
特別說明的是(())字元和括弧之間不需要留空格,但[[ ]],[]要求比較嚴格,需要留空格。
2、字元串比較,上面的-eq,-nq等公式只適用於數字比較,不適用於字元比較
[plain] view plain
= 等於,如:if [ "$a" = "$b" ]
== 等於,如:if [ "$a" == "$b" ],與=等價
[[ $a == z* ]] # 如果$a以"z"開頭(模式匹配)那麼將為true
[[ $a == "z*" ]] # 如果$a等於z*(字元匹配),那麼結果為true
[ $a == z* ] # File globbing 和word splitting將會發生
[ "$a" == "z*" ] # 如果$a等於z*(字元匹配),那麼結果為true
3、括弧之間的區別:
[[ ]],[]對括弧內變數要求嚴格且且敏感,但(())則相對寬松一些
[plain] view plain
1、if [[ $a == $b ]] 和 if [[ $a == $b ]] 等價
但if [[ $a == $b ]] 和if [[ a == b ]] 不等價
2、if (($a == $b)) 和 if (($a = $b))等價
if (($a == $b)) 和 if ((a == b)) 等價
4、多條件判斷:
&&和||適用於[[ ]]和(),-a和-o適用於[]中
舉例如下:
[plain] view plain
if ((i == 1)) 和 if [ "$i" == 1 ]等價
if [[ "$i" = 1 && "$j" = 2 ]] 和 if ((i = 1)) || ((j = 2))
5、其它說明:
!= 不等於,如:if [ "$a" != "$b" ]
這個操作符將在[[]]結構中使用模式匹配.
< 小於,在ASCII字母順序下.如:
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意:在[]結構中"<"需要被轉義.
> 大於,在ASCII字母順序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
3. 關於linux if多個判斷問題
1 = 1 -a 2 = 2 -a $i = 2
表達式中,=也要和數值空格分開,不然會把 1=1這種當成一個字元串處理
4. linux shell 指令 諸如-d, -f, -e之類的判斷表達式
文件比較運算符-e filename
如果 filename存在,則為真 [ -e /var/log/syslog ]-d filename
如果 filename為目錄,則為真 [ -d /tmp/mydir ]-f filename
如果 filename為常規文件,則為真 [ -f /usr/bin/grep ]-L filename
如果 filename為符號鏈接,則為真 [ -L /usr/bin/grep ]-r filename
如果 filename可讀,則為真 [ -r /var/log/syslog ]-w filename
如果 filename可寫,則為真 [ -w /var/mytmp.txt ]-x filename
如果 filename可執行,則為真 [ -L /usr/bin/grep ]filename1-nt filename2
如果 filename1比 filename2新,則為真 [ /tmp/install/etc/services -nt /etc/services ]filename1-ot filename2
如果 filename1比 filename2舊,則為真 [ /boot/bzImage -ot arch/i386
/boot/bzImage ]字元串比較運算符 (請注意引號的使用,這是防止空格擾亂代碼的好方法)
-z string 如果 string長度為零,則為真 [ -z "$myvar" ]-n string 如果 string長度非零,則為真 [ -n "$myvar" ]
string1= string2 如果 string1與 string2相同,則為真 [ "$myvar" = "one two three"]
string1!= string2 如果 string1與 string2不同,則為真 [ "$myvar" != "one two three" ]
算術比較運算符num1-eq num2 等於 [ 3 -eq $mynum ]
num1-ne num2 不等於 [ 3 -ne $mynum ]num1-lt num2 小於 [ 3 -lt $mynum ]
num1-le num2 小於或等於 [ 3 -le $mynum ]num1-gt num2 大於 [ 3 -gt $mynum ]
num1-ge num2 大於或等於 [ 3 -ge $mynum ]
拓展資料:
Linux操作系統
是基於UNIX操作系統發展而來的一種克隆系統,它誕生於1991 年的 [Linux桌面] 10 月5 日(這是第一次正式向外公布的時間)。以後藉助於Internet網路,並通過全世界各地計算機愛好者的共同努力,已成為今天世界上使用最多的一種UNIX 類操作系統,並且使用人數還在迅猛增長。
5. linux中大於等於
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" ))
> 大於(...) (( "$a" > "$b" ))
>= 大於等於(...) (( "$a" >= "$b" ))
6. shell中awk中if判斷
你直接運行grep '2018-06' gprs_c* | grep $num |more 看下是不是有輸出?
如果提示
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
就是num沒有賦值
然後看下awk那裡,我這里舉了個例子,可以試試下裡面例子中的引號
$catgprs_c
2018-06-02;447956815999;2018-06-0200:00:00
2018-06-03;447956815999;2018-06-0300:00:00
2018-06-04;447956815999;2018-06-0400:00:00
$grep'2018-06'gprs_c*|grep'447956815999'|awk-F";"'{if($3<"2018-06-0300:00:00")print$1}'
2018-06-02
$date1="2018-06-0300:00:00"
$grep'2018-06'gprs_c*|grep'447956815999'|awk-F";"'{if($3<"'"$date1"'")print$1}'
2018-06-02
7. C語言 if如果我想加if某變數等於=比如。。。等於apple,怎麼寫呢 是不是if(ch=「apple」);好像不行
用「==」,「=」符號在C語言中代表的是賦值的意義,比較相等的話,應該用「==」符號,前提是比較雙方的數據類型相同。不然會出現錯誤的。對吧!希望能幫到你!
8. linux shell編程 if語句無法判斷變數是否相等
(($num1 != $num2))裡面的是算術表達式
用(($num1 - $num2))
或者[ [ $num1 != $num2 ]]
9. linux中的{if($5!=4096)是什麼意思
如果第五個參數 不等於 4096
10. linux if判斷是不是數字
if echo $n|grep "^[0-9][0-9]*$";then
echo $n是數字
fi