bash shell中的if-then語(yǔ)句
shell中的流控制if語(yǔ)句
簡(jiǎn)單的腳本可以只包含順序執(zhí)行的命令,但結(jié)構(gòu)化命令允許根據(jù)條件改變程序執(zhí)行的順序。
if語(yǔ)句
if-then語(yǔ)句
if-then
語(yǔ)句格式如下:
if command then commands fi
在其他編程語(yǔ)言中, if
語(yǔ)句之后的對(duì)象是一個(gè)等式,這個(gè)等式的求值結(jié)果為 TRUE
或 FALSE
。bash shell
的 if
語(yǔ)句會(huì)運(yùn)行 if
后面的那個(gè)命令。如果該命令的退出狀態(tài)碼是0
,位于 then
部分的命令就會(huì)被執(zhí)行。
#!/bin/bash if pwd then echo "pwd worked" fi
輸出:
# rob@xx-rob:~$ ./test1
/home/rob
pwd worked
if-then-else 語(yǔ)句
格式:
if command then commands else commands fi
示例:
v=bin if grep $v pwd then echo "pwd worked" else echo "cannot find $v" fi
結(jié)果:
rob@xx-rob:~$ ./test1
# grep: pwd: 沒(méi)有那個(gè)文件或目錄
# cannot find bin
if
還可以嵌套多層:
if command1 then command set 1 elif command2 then command set 2 elif command3 then command set 3 elif command4 then command set 4 fi
test命令
bash shell if
語(yǔ)句的條件是command
,如果要使用常規(guī)的數(shù)值/字符串比較條件,需要使用test
命令。
使用test
命令的if-then-fi
語(yǔ)句:
if test condition then commands fi
如果不寫(xiě) test
命令的condition
部分,它會(huì)以非零的退出狀態(tài)碼退出,并執(zhí)行 else
語(yǔ)句塊。
加入條件時(shí),test
命令會(huì)測(cè)試該條件。
bash shell
中 test
命令的另外一種寫(xiě)法是使用[ condition ]
中括號(hào),第一個(gè)方括號(hào)之后和第二個(gè)方括號(hào)之前必須加上一個(gè)空格,
否則就會(huì)報(bào)錯(cuò)。
if
中條件判斷的幾個(gè)條件:
- 判斷變量是否有值
if test ${variable}
- 數(shù)值比較
- 字符串比較
- 文件比較
數(shù)值比較
test
命令的數(shù)值比較功能:
比較 | 描述 |
---|---|
n1 -eq n2 | 檢查 n1 是否與 n2 相等 |
n1 -ge n2 | 檢查 n1 是否大于或等于 n2 |
n1 -gt n2 | 檢查 n1 是否大于 n2 |
n1 -le n2 | 檢查 n1 是否小于或等于 n2 |
n1 -lt n2 | 檢查 n1 是否小于 n2 |
n1 -ne n2 | 檢查 n1 是否不等于 n2 |
#!/bin/bash if test 100 -le 145; then echo "100 is smaller than 145" fi v=12 if [ $v -eq 12 ];then echo "value is 12" fi
bash shell
只能處理整數(shù),不能使用浮點(diǎn)數(shù)作為判斷條件。
字符串比較
bash shell
條件測(cè)試還允許比較字符串值,比較字符串比較煩瑣。
比較 | 描述 |
---|---|
str1 = str2 | 檢查 str1 是否和 str2 相同 |
str1 != str2 | 檢查 str1 是否和 str2 不同 |
str1 < str2 | 檢查 str1 是否比 str2 小 |
str1 > str2 | 檢查 str1 是否比 str2 大 |
-n str1 | 檢查 str1 的長(zhǎng)度是否非0 |
-z str1 | 檢查 str1 的長(zhǎng)度是否為0 |
在bash sehll
中比較運(yùn)算符需要使用轉(zhuǎn)義,否則會(huì)被當(dāng)成重定向運(yùn)算符。
s1="val" s2="thi" # 升成`thi`的文件 if [ $s1 > $s2 ]; then echo "new file $v2 has been created." fi if [ $s1 \> $s2 ]; then echo "$s1 is greater than $s2." fi
比較測(cè)試中使用的是標(biāo)準(zhǔn)的ASCII
順序,根據(jù)每個(gè)字符的ASCII
數(shù)值來(lái)決定排序結(jié)果。在比較測(cè)試中,大寫(xiě)字母被認(rèn)為是小于小寫(xiě)字母的。
文件比較
測(cè)試Linux
文件系統(tǒng)上文件和目錄的狀態(tài)。
命令 | 描述 |
---|---|
-d file | 檢查 file 是否存在并是一個(gè)目錄 |
-e file | 檢查 file 是否存在 |
-f file | 檢查 file 是否存在并是一個(gè)文件 |
-r file | 檢查 file 是否存在并可讀 |
-s file | 檢查 file 是否存在并非空 |
-w file | 檢查 file 是否存在并可寫(xiě) |
-x file | 檢查 file 是否存在并可執(zhí)行 |
-O file | 檢查 file 是否存在并屬當(dāng)前用戶所有 |
-G file | 檢查 file 是否存在并且默認(rèn)組與當(dāng)前用戶相同 |
file1 -nt file2 | 檢查 file1 是否比 file2 新 |
file1 -ot file2 | 檢查 file1 是否比 file2 舊 |
if-then
語(yǔ)句允許你使用布爾邏輯來(lái)組合測(cè)試,有兩種布爾運(yùn)算符可用:
[ condition1 ] && [ condition2 ]
[ condition1 ] || [ condition2 ]
case
語(yǔ)句
在嘗試計(jì)算一個(gè)變量的值,在一組可能的值中尋找特定值,可能不得不寫(xiě)出很長(zhǎng)的 if-then-else
語(yǔ)句。case
命
令會(huì)采用列表格式來(lái)檢查單個(gè)變量的多個(gè)值。
case variable in pattern1 | pattern2) commands1;; pattern3) commands2;; *) default commands;; esac
一個(gè)例子:
c=1 case $c in 1 | 2) echo "1";; 3) echo "23";; esac
到此這篇關(guān)于bash shell中的if-then語(yǔ)句的文章就介紹到這了,更多相關(guān)shell if-then語(yǔ)句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
獲取站點(diǎn)的各類(lèi)響應(yīng)時(shí)間(dns解析時(shí)間,響應(yīng)時(shí)間,傳輸時(shí)間)
有時(shí)候?yàn)榱藴y(cè)試網(wǎng)絡(luò)情況,需要返回每個(gè)階段的耗時(shí)時(shí)間,比如DNS解析耗時(shí),建立連接所消耗的時(shí)間,從建立連接到準(zhǔn)備傳輸所使用的時(shí)間,從建立連接到傳輸開(kāi)始所使用的時(shí)間,整個(gè)過(guò)程耗時(shí),下載的數(shù)據(jù)量,下載速度,上傳數(shù)據(jù)量,上傳速度等等2014-03-03Linux?ps命令詳解及Linux查看進(jìn)程的操作方法
這篇文章主要介紹了Linux?ps命令詳解,Linux查看進(jìn)程的操作方法,ps命令常用的方式有三種,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12Linux下使用ntpdate進(jìn)行時(shí)間同步的方法實(shí)現(xiàn)
ntpdate是Linux下用于從NTP服務(wù)器同步時(shí)間的命令行工具,本文將給大家介紹Linux下使用ntpdate進(jìn)行時(shí)間同步的方法實(shí)現(xiàn),文中有相關(guān)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2024-03-03通過(guò)shell腳本對(duì)mysql的增刪改查及my.cnf的配置
這篇文章主要介紹了通過(guò)shell腳本對(duì)mysql的增刪改查及my.cnf的配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07