欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell條件語(yǔ)句(條件測(cè)試、if語(yǔ)句、case語(yǔ)句)

 更新時(shí)間:2023年06月20日 09:57:39   作者:小啄學(xué)習(xí)日記  
本文主要介紹了Shell條件語(yǔ)句(條件測(cè)試、if語(yǔ)句、case語(yǔ)句),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一.條件語(yǔ)句

條件測(cè)試:判斷某需求是否滿足,需要由測(cè)試機(jī)制來(lái)實(shí)現(xiàn),專用的測(cè)試表達(dá)式需要由測(cè)試命令輔助完成。

測(cè)試過(guò)程,實(shí)現(xiàn)評(píng)估布爾聲明,以便用在條件性環(huán)境下進(jìn)行執(zhí)行

  • 若真,則狀態(tài)碼變量 $? 返回0
  • 若假,則狀態(tài)碼變量 $? 返回1

1.test命令測(cè)試條件表達(dá)式

格式1:test  [操作符選項(xiàng)]  條件表達(dá)式
格式2:[  操作符 條件表達(dá)式  ]

常見(jiàn)的測(cè)試操作符含義
-d測(cè)試是否為目錄(directory)
-e測(cè)試目錄或文件是否存在(Exist)
-f測(cè)試是否為文件(File)
-r測(cè)試當(dāng)前用戶是否有權(quán)限讀取(Read)
-w測(cè)試當(dāng)前用戶是否有權(quán)限寫(xiě)入(Write)
-x測(cè)試當(dāng)前用戶是否有權(quán)限執(zhí)行(eXcute)
-L測(cè)試是否為軟連接文件
-nt判斷文件A是否比文件B新
-ot判斷文件A是否比文件B舊
-ef判斷兩個(gè)文件是否為同一文件

示例1:test  [操作符選項(xiàng)]  條件表達(dá)式

示例2:[  操作符 條件表達(dá)式  ]

2.整數(shù)數(shù)值比較

格式:
[ 整數(shù)1 操作符 整數(shù)2 ] 

常見(jiàn)測(cè)試操作符:

操作符含義
-eq等于(Equal)
-ne不等于(Not Equal)
-lt小于(Leser Than)
-gt大于(Greater Than)
-le小于或等于(Lesser or Equal)
-ge大于或等于(Greater or Equal)

示例1:比較兩個(gè)整數(shù)大小

示例2:查詢當(dāng)前目錄下的文件數(shù)是否大于10,如果大于,則進(jìn)行提示

示例3: 查看系統(tǒng)內(nèi)存是否低于1024M,如果低于則提示

3.字符串比較

格式:
[ "字符串1" = "字符串2" ] 			#判斷是否相等
[ "字符串1" != "字符串2" ] 			#判斷是否不等
[ -z "字符串" ]                     #判斷字符串內(nèi)容是否為空
[ -n "字符串" ]                     #判斷字符是否存在

 示例:

4.邏輯測(cè)試(短路運(yùn)算)

格式:
[ 表達(dá)式1 ]  操作符 [ 表達(dá)式2 ]
命令1 操作符 命令2

常見(jiàn)條件

  • -a或&&:邏輯與,“而且”的意思全真才為真
  • -o或||:邏輯或,“或者”的意思一真即為真
  • !:邏輯否
[ 表達(dá)式1 ] && [ 表達(dá)式2 ] 等同于 [ 表達(dá)式1 -a 表達(dá)式2 ] 等同于 [[ 表達(dá)式1 && 表達(dá)式2 ]] 
[ 表達(dá)式1 ] || [ 表達(dá)式2 ] 等同于 [ 表達(dá)式1 -o 表達(dá)式2 ] 等同于 [[ 表達(dá)式1 || 表達(dá)式2 ]] 

三元運(yùn)算符

[  表達(dá)式  ] && a || b

當(dāng)條件表達(dá)式為真時(shí),取a值;當(dāng)條件表達(dá)式為假時(shí),取b值

二.if語(yǔ)句

1.單分支結(jié)構(gòu)

如果只有一個(gè)判斷式要進(jìn)行,那么我們可以使用單分支的if語(yǔ)句

格式:
if [ 條件判斷式 ]; 
then
	                #當(dāng)條件判斷成立時(shí),可以進(jìn)行的命令工作內(nèi)容
fi 					#這里將if反過(guò)來(lái)寫(xiě),結(jié)束if語(yǔ)句的意思

2.雙分支結(jié)構(gòu)

格式:
if 判斷條件; then
 條件為真的分支代碼
else
 條件為假的分支代碼
fi

3.多分支結(jié)構(gòu)

格式:
if [ 條件判斷式 ]; then
	當(dāng)條件判斷成立時(shí),可以進(jìn)行的命令工作內(nèi)容
elif [ 條件判斷式二 ]; then
	當(dāng)條件判斷成立時(shí),可以進(jìn)行的命令工作內(nèi)容
else	
	當(dāng)上面的條件判斷都不成立時(shí),可以進(jìn)行的命令工作內(nèi)容
fi 

三.case語(yǔ)句

格式:
case 變量名稱 in
“第一個(gè)變量?jī)?nèi)容”
	程序段
	;;
“第二個(gè)變量?jī)?nèi)容”
	程序段
	;;
*)
	不包含第一個(gè)變量?jī)?nèi)容與第二個(gè)變量?jī)?nèi)容的其他程序執(zhí)行段
	默認(rèn)程序段
	;;
esac

注意點(diǎn):

  • case行首必須以單詞“in”,每一模式必須以單個(gè)右括號(hào)")"結(jié)束
  • 雙分號(hào)";;"表示命令序列的結(jié)束
  • 模式字符串中,可以用方括號(hào)表示一個(gè)連續(xù)的范圍,如"[0-9]";還可以使用豎杠|表示或,比如a|b
  • 最后的)表示默認(rèn)模式,其中的相當(dāng)于通配符

四.if語(yǔ)句和case語(yǔ)句腳本小倉(cāng)庫(kù)

1.字符識(shí)別輸入數(shù)字or字母(case

#!/bin/bash
read -p "請(qǐng)?jiān)诖颂庉斎耄? key
case $key in
[0-9])
echo "你輸入的是 數(shù)字"
;;
[a-z]|[A-Z])
echo "你輸入的是 字母"
;;
*)
echo "輸入有誤"
bash $0
esac

2.分?jǐn)?shù)等級(jí)分類(if

#!/bin/bash
#積分分類
read -p "請(qǐng)輸入積分(0-100):" JF
if [ $JF -ge 90 ];then
  echo '優(yōu)'
elif [ $JF -lt 90 ];then
 echo '差'
fi

3.測(cè)試機(jī)器是否在線(for、if

#!/bin/bash
for i in {1..254}
do
{
ping  -c2  -w2  192.168.91.$i &>/dev/null
if  [ $? -eq 0 ]
then
echo  host $i is online
echo "$i" >> host.txt
else
echo "host $i is offline"
fi
}&
done
wait

4.猜價(jià)格小游戲(while、if

#!/bin/bash
p=`echo $[RANDOM%1000+1]`
time=0
while true
do
let time++
read -p "請(qǐng)輸入您猜測(cè)的價(jià)格(1-1000):" h
if [ $h -eq $p ]
then
echo "恭喜您猜中了,您一共猜測(cè)了$time次"
exit
elif [ $h -gt $p ]
then
echo "您猜測(cè)的價(jià)格過(guò)高"
else
echo "您猜測(cè)的價(jià)格過(guò)低"
fi
done

5.檢查文件是否存在且有執(zhí)行權(quán)限(if

#!/bin/bash
#檢查用戶家目錄中的 test.sh 文件是否存在,并且檢查是否有執(zhí)行權(quán)
cd /root
test -f test.sh
if [ $? -eq 0 ];then
  test -x test.sh
  if [ $?-eq 0 ];then
    echo "有test.sh文件且可執(zhí)行"
  else
    echo "有test.sh文件但不可執(zhí)行"
  fi
else
  echo "沒(méi)有test.sh文件"
fi

6.賽跑選拔并分組(if

#!/bin/bash
#提示用戶輸入100米賽跑的秒數(shù),要求判斷秒數(shù)大于0且小于等于10秒的進(jìn)入選拔賽,
#大于10秒的都淘汰,如果輸入其它字符則提示重新輸入;
#進(jìn)入選拔賽的成員再進(jìn)一步判斷男女性別,男生進(jìn)男生組,女生進(jìn)女生組,如果輸入錯(cuò)誤請(qǐng)?zhí)崾惧e(cuò)誤
read -p "請(qǐng)輸入您100米賽跑的秒數(shù):" sec 
if [ $sec -gt 0 ] && [ $sec -le 10 ];then
     read -p "請(qǐng)輸入您的性別(男|女):" sex 
  if [ $sex = "男" ] || [ $sex = "女" ];then
    if [ $sex == "男" ];then
       echo "恭喜進(jìn)入選拔賽男生組"
    elif [ $sex == "女" ];then
       echo "恭喜進(jìn)入選拔賽女生組"
    fi  
  else
    echo "輸入錯(cuò)誤,請(qǐng)重新輸入"
  fi  
else
    echo "很遺憾,您被淘汰了"
fi
 

7.解壓壓縮包(case

#!/bin/bash
#用case語(yǔ)句解壓根據(jù)后綴名為 .tar.gz 或 .tar.bz2 的壓縮包到 /opt 目錄
read -p "請(qǐng)輸入你要解壓的文件:" file
case $file in
*.tar.bz2)
echo "正在解壓bz2文件至opt目錄中....."
tar -xvf $file -C /opt
;;
*.tar.gz)
echo "正在解壓gz文件至opt目錄中....."
tar -xvf $file -C /opt
;;
*)
echo "文件格式有誤,請(qǐng)重新輸入文件"
;;
esac

8.判斷奇數(shù)偶數(shù)(if

方法一:
#!/bin/bash
read -p "請(qǐng)輸入一個(gè)數(shù)字:" num
let i=$num+1
if [ $? -eq 0 ];then
  echo "你輸入的是整數(shù)"
    let rst=$num%2
    if [ $rst -eq 0 ];then
      echo "你輸入的是偶數(shù)"
    else
      echo "你輸入的是奇數(shù)"
    fi
else
  echo "你輸入的不是整數(shù)"
fi
方法二:
#!/bin/bash
#判斷輸入的內(nèi)容是奇數(shù)還是偶數(shù)
read -p "請(qǐng)輸入一個(gè)數(shù)字:" num
let n=$num+1
if [ $? -eq 0 ];then
  echo "你輸入的是整數(shù)"
    if [ $[ $num % 2 ] -eq 0 ];then
      echo "你輸入的是偶數(shù)"
    else
      echo "你輸入的是奇數(shù)"
    fi
else
  echo "你輸入的不是整數(shù)"
fi

到此這篇關(guān)于Shell條件語(yǔ)句(條件測(cè)試、if語(yǔ)句、case語(yǔ)句)的文章就介紹到這了,更多相關(guān)Shell條件語(yǔ)句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論