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

bash shell中的if-then語(yǔ)句

 更新時(shí)間:2023年12月26日 09:54:53   作者:恒友成  
bash shell的 if 語(yǔ)句會(huì)運(yùn)行 if 后面的那個(gè)命令,如果該命令的退出狀態(tài)碼是0,位于 then 部分的命令就會(huì)被執(zhí)行,這篇文章主要介紹了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é)果為 TRUEFALSE 。bash shellif 語(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 shelltest命令的另外一種寫(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)文章

  • linux下使用perl獲取本機(jī)ip的幾種方法介紹

    linux下使用perl獲取本機(jī)ip的幾種方法介紹

    需要獲取本機(jī)ip有很多種情景,比如做分布式處理的時(shí)候。那么,如何在worker腳本里獲取本機(jī)ip?本文列舉了一系列的方法,有長(zhǎng)有短,各有優(yōu)劣,有shell有perl有python
    2013-02-02
  • Linux常用高頻命令

    Linux常用高頻命令

    這篇文章介紹了Linux常用的高頻命令,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 獲取站點(diǎn)的各類(lèi)響應(yīng)時(shí)間(dns解析時(shí)間,響應(yīng)時(shí)間,傳輸時(shí)間)

    獲取站點(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-03
  • 25個(gè)好用的Shell腳本常用命令分享

    25個(gè)好用的Shell腳本常用命令分享

    這篇文章主要介紹了25個(gè)好用的Shell腳本常用命令,由個(gè)人收集整理而來(lái),需要的朋友可以參考下
    2014-03-03
  • Linux?ps命令詳解及Linux查看進(jìn)程的操作方法

    Linux?ps命令詳解及Linux查看進(jìn)程的操作方法

    這篇文章主要介紹了Linux?ps命令詳解,Linux查看進(jìn)程的操作方法,ps命令常用的方式有三種,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Linux下使用ntpdate進(jìn)行時(shí)間同步的方法實(shí)現(xiàn)

    Linux下使用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的配置

    這篇文章主要介紹了通過(guò)shell腳本對(duì)mysql的增刪改查及my.cnf的配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Linux查看日志文件寫(xiě)入速度的4種方法詳解

    Linux查看日志文件寫(xiě)入速度的4種方法詳解

    有時(shí),我們需要查看某個(gè)文件的增長(zhǎng)速度,如日志文件,以此來(lái)感受系統(tǒng)的負(fù)載情況,因?yàn)橐话闱闆r下,日志寫(xiě)入越快,說(shuō)明系統(tǒng)負(fù)載越重。本文總結(jié)了Linux中查看日志增長(zhǎng)速度的幾種方法,需要的可以參考一下
    2022-06-06
  • 使用curl遞歸下載軟件腳本分享

    使用curl遞歸下載軟件腳本分享

    本腳本完成了對(duì)apache的鏡像網(wǎng)站的遞歸掃描。通過(guò)文件IO的緩存方式記錄可下載文件,再針對(duì)需要文件的后綴名批量下載軟件包備用,大家可以修改成自己腳本
    2014-03-03
  • Linux中scp命令獲取遠(yuǎn)程文件的方法

    Linux中scp命令獲取遠(yuǎn)程文件的方法

    scp用于在Linux下進(jìn)行遠(yuǎn)程拷貝文件的命令,和它類(lèi)似的命令有cp。接下來(lái)通過(guò)本文給大家介紹Linux中scp命令獲取遠(yuǎn)程文件的方法,一起看看吧
    2016-08-08

最新評(píng)論