linuxSHELL學習之數字比較 字串比較

2021-07-09 06:20:12 字數 2846 閱讀 7479

1、test

test提供一種檢測if-then語句中不同條件的方法,如果test命令中列出的條件評估值為true,test

命令以0

推出狀態碼退出。

if test condition

then 

commands

fitest命令提供3類條件的評估:數值比較、字元比較、檔案比較

數值比較:

n1 -eq n2檢查n1是否等於n2         n1 -le n2檢查n1是否小於等於n2

n1 -ge n2檢查n1是否大於等於n2     n1 -lt n2檢查n1是否小於n2

n1 -gt n2檢查n1是否大於n2         n1 -ne n2檢查n1是否不等於n2

[root@t1 ~]# cat t1.sh 

#!/bin/bash

#using numeric test comparisons

var1=10

var2=11

if [ $var1 -lt 5 ]   #注意這裡的test與「[」和「]」之間必須要有空格,否則會報錯的。

then

echo "the test value $var1 is greater than 5"

fiif [ $var1 -eq $var2 ]  #注意這裡的test與「[」和「]」之間必須要有空格

then

echo "the values are equal"

else

echo "the values are different"

fi[root@t1 ~]# ./t1.sh 

the values are different

字串比較:

str1 = str2檢查str1與str2是否相同       str1 > str2檢查str1是否大於str2

str1 != str2檢查str1與str2是否不同      -n str1 檢查str1的長度是否大於0

str1 < str2檢查str1是否小於str2         -z str1 檢查str1的長度是否為0

[root@t1 ~]# cat t2.sh  --判斷相等否

#!/bin/bash

#testing string eguality

testuser=root

if [ $user = $testuser ]

then 

echo "welcome $testuser"

fi[root@t1 ~]# ./t2.sh 

welcome root

[root@t1 ~]# cat t3.sh   ---不等判斷

#!/bin/bash

#tesing string equality

testuser=oracle

if [ $testuser != root ]

then 

echo "this is not $testuser"

else

echo "welcome $testuser"

fi[root@t1 ~]# ./t3.sh 

this is not oracle

字串順序:

*大於和小於符號一定要轉義,否則shell會將他們當做重定向符號,將字串值看作是檔名。

*大於和小於順序與在sort中不同

*test使用標準的ascii排序,使用每個字母的ascii數值來決定排序順序,sort命令使用為當前系統語言設定定義的排序順序。對於英語來說,當前設定指定小寫字母排在大寫字母之前。

[root@t1 ~]# cat t4.sh 

#!/bin/bash

#testing string sort order

var1=testing

var2=testing

if [ $var1 \> $var2 ]     ---使用標準的assci進行的比較

then

echo "$var1 is greater than $var2"

else

echo "$var1 is less than $var2"

fi[root@t1 ~]# ./t4.sh 

testing is less than testing

**if [ -n var1 ]判斷var1是否為非0值,if [ -z var1 ]判斷var1是否為0

[root@t1 ~]# cat t5.sh 

#!/bin/bash

#testing string length

var1=testing

var2=''

if [ -n $var1 ] 

then

echo "the string '$var1' is not emppty" 

else

echo "the  string '$var1' is empty"

fiif [ -z $var2 ]

then

echo "the string '$var2' is empty"

else

echo "the string '$var2' is not empty"

fiif [ -z $var3 ]

then

echo "the string '$var3' is empty"

else

echo "the string '$var3' is not empty"

fi[root@t1 ~]# ./t5.sh 

the string 'testing' is not emppty

the string '' is empty

the string '' is empty

Linux shell 猜數字遊戲

bin bash times 0 time 5 luck 555 while true do read p 輸入您猜的數字 100 999 ack let times if luck eq ack times le time then echo 您猜對了,正確答案是 luck,您用了 times次機...

linuxshell中數字的比較

整數之間的比較 示例指令碼 bin bash if 1 gt 2 then echo 引數 1大於引數 2 else echo 引數 1小於引數 2 fi數字判斷一些命令 gt是大於 lt是小於 eq是等於 ne是不等於 ge是大於等於 le是小於等於 小數及整數之前的比較 示例指令碼 a 1.6 ...

linux shell學習筆記

shell程式 將一系列linux程式通過流程控制寫在乙個文字檔案中,由shell讀取此文字檔案並且依次執行檔案中的程式。例子 bin bash 代表shell程式的注釋 echo hello linux echo this is a shell file.shell程式中需要用變數來儲存程式中的資...