国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux系統(tǒng)Shell腳本編程之條件語句

這篇具有很好參考價(jià)值的文章主要介紹了Linux系統(tǒng)Shell腳本編程之條件語句。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、條件測試

  • Shell 環(huán)境根據(jù)命令執(zhí)行后的返回狀態(tài)值 " $? " 來判斷是否執(zhí)行成功,當(dāng)返回值為0時(shí)表示成功,否則表示失敗或異常(非0值)。
  • 使用專門的測試工具 test 命令,可以對(duì)特定條件進(jìn)行測試,并根據(jù)返回值(值為0)來判斷是否成立。
格式1:test  條件表達(dá)式
格式2:[  條件表達(dá)式  ]
注意[]空格,否則會(huì)失敗
測試 是否成功使用 $?  返回值
[ 操作符 文件或目錄 ]
help test

test命令格式

test 條件表達(dá)式
或
[ 條件表達(dá)式 ]                  #條件表達(dá)式的兩邊都需要有空格,且此方法更為常用
或
[[ 條件表達(dá)式 ]]

1、文件測試

  • 文件測試指的是根據(jù)給定的路徑名稱,判斷對(duì)應(yīng)的是文件還是目錄,或者判斷文件是否可讀、可寫、可執(zhí)行等。

基本格式

[ 操作符 文件或目錄 ] (注意兩端要有空格)

常用的選項(xiàng):

選項(xiàng) 說明
-d 測試是否為目錄
-e 測試目錄或文件是否存在
-f 測試是否為文件
-r 測試當(dāng)前用戶是否有權(quán)限讀取
-w 測試當(dāng)前用戶是否有權(quán)限寫入
-x 測試當(dāng)前用戶是否有權(quán)限執(zhí)行
-b 測試是否為設(shè)備文件
-c 測試是否為字符設(shè)備
-s 測試存在且文件大小為空
-L 測試是否為鏈接文件
條件測試:判斷某需求是否滿足,需要由測試機(jī)制來實(shí)現(xiàn),專用的測試表達(dá)式需要由測試命令輔助完成

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

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

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

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

比較兩個(gè)文件時(shí)常用的選項(xiàng)

-nt:判斷文件A是否比文件B新

-ot:判斷文件A是否比文件B舊

-ef:判斷兩個(gè)文件是否為同一個(gè)文件,用來判斷兩個(gè)文件是否指向同一個(gè)inode。

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

整數(shù)值比較是指根據(jù)給定的兩個(gè)整數(shù)值來判斷第一個(gè)數(shù)與第二個(gè)數(shù)的關(guān)系,如是否大于、等于、小于第二個(gè)數(shù)。

基本格式:

[  整數(shù)1  -操作符  整數(shù)2  ] 公式
格式 說明
-eq 第一個(gè)數(shù)等于第二個(gè)數(shù)
-ne 第一個(gè)數(shù)不等于第二個(gè)數(shù)
-gt 第一個(gè)數(shù)大于第二個(gè)數(shù)
-lt 第一個(gè)數(shù)小于第二數(shù)
-le 第一個(gè)數(shù)小于或等于第二個(gè)數(shù)
-ge 第一個(gè)數(shù)大于或等于第二個(gè)數(shù)
[root@localhost test]# a=5
[root@localhost test]# b=10

[root@localhost test]# [ $a -eq $b ]
[root@localhost test]# echo $?
1

[root@localhost test]# [ $a -lt $b ]
[root@localhost test]# echo $?
0

[root@localhost test]# [ $a -le $b ]
[root@localhost test]# echo $?
0

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

3、字符串比較

字符串比較通常用來檢查用戶輸入、系統(tǒng)環(huán)境等是滿足條件,在提供交互式操作的Shell腳本中,也可用來判斷用戶輸入的位置參數(shù)是否符合要求。

格式

[ 字符串1  =    字符串2 ]            ##是否相同

[ 字符串1  !=    字符串2 ]           ##是否不相同

[ -z 字符串 ]                        ##是否為空

[ -n 字符串 ]                        ##字符是否存在

常用的操作符

=:第一個(gè)字符串和第二個(gè)字符串相同

!=:第一個(gè)字符串與第二個(gè)字符串不相同,其中“!”符號(hào)表示取反

-z:字符串內(nèi)容為空
[root@localhost test]# str1=liu
[root@localhost test]# str2=yuan

[root@localhost test]# [ $str1 = $str2 ]               ##比較是否相同
[root@localhost test]# echo $?
1                                                      ##不相同

[root@localhost test]# [ $str1 != $str2 ]              ##比較是否不相同
[root@localhost test]# echo $?
0                                                      ##兩者比較不相同,所以返回值為0,正確

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

4、邏輯運(yùn)算(短路運(yùn)算)

格式:

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

? 與? ?


!  取反


且   &&

第一一個(gè)命令為真,才需要執(zhí)行第二個(gè)命令
全真才為真,一假即為假

第一個(gè)命令假了,一定假了 

cmd1  && cmd2


全真才為真  一假即為假      
第一個(gè)CMD1結(jié)果為真 ,第二個(gè)CMD2必須要參與運(yùn)算,才能得到最終的結(jié)果 
第一個(gè)CMD1結(jié)果為假 ,總的結(jié)果必定為假,因此不需要執(zhí)行CMD2


或   ||

一真即為真,全假才為假
第一個(gè)命令為真,不需要執(zhí)行第二個(gè)命令了,  一定為真了
第一個(gè)命令為假,需要執(zhí)行第二個(gè)命令來看 整個(gè)式子的結(jié)果

cmd1 || cmd2

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

常見的條件:

-a或&& 邏輯與,“而且”的意思全真才為真
-o或|| 邏輯或,“或者”的意思一真即為真
! 邏輯否

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

5、雙中括號(hào)

[[ expression ]] 用法
== 左側(cè)字符串是否和右側(cè)的PATTERN相同
 注意:此表達(dá)式用于[[ ]]中,PATTERN為通配符
=~ 左側(cè)字符串是否能夠被右側(cè)的正則表達(dá)式的PATTERN所匹配
 注意: 此表達(dá)式用于[[  ]]中;擴(kuò)展的正則表達(dá)式

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

6、()? ? {}

格式:

(CMD1;CMD2;...)和 {    CMD1;CMD2;...; } 都可以將多個(gè)命令組合在一起,批量執(zhí)行
#()會(huì)開啟子shell
[root@centos8 ~]#echo $BASHPID
1920
[root@centos8 ~]#( echo $BASHPID;sleep 100)
1979
[root@centos8 ~]#pstree -p
├─sshd(719)───sshd(1906)───sshd(1919)─┬─bash(1920)───bash(1979)───sleep(1980)


#{ } 不會(huì)開啟子shell
[root@centos8 ~]#echo $BASHPID
1920
[root@centos8 ~]#{ echo $BASHPID; }
1920
()表示執(zhí)行過,直接顯示結(jié)果;{}要執(zhí)行操作,也顯示結(jié)果;

()不需要結(jié)尾;{}需要;結(jié)尾;

()會(huì)開啟子進(jìn)程;{}不會(huì)開啟子進(jìn)程

實(shí)操:

1.磁盤使用量

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

發(fā)郵件

vim mail.sh

#!/bin/bash
use=`df|grep /dev/sda|tr -s " "|cut -d " " -f5| tr -d %`

[ $use -ge 80 ] && echo "磁盤使用量不足" |mail -s warning 224----432@qq.com || echo "磁盤使用量足夠"


bash mail.sh

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維?Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

二、if語句

1、單分支if語句

單分支if語句:對(duì)于單分支的選擇結(jié)構(gòu),只有在“條件成立”時(shí)才會(huì)執(zhí)行相應(yīng)的代碼,否則不執(zhí)行任何操作。

語法格式

if 條件測試操作
then
    命令序列
fi

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

2、雙分支if語句

對(duì)于雙分支的選擇結(jié)構(gòu),要求針對(duì)條件成立 條件不成立兩種情況分別執(zhí)行不同的操作。

語法格式

if 條件測試操作
then
    命令序列1
else
    命令序列2
fi

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

3、多分支if語句

多分支結(jié)構(gòu)能夠根據(jù)多個(gè)互斥的條件分別執(zhí)行不同的操作,實(shí)際上等同于嵌套使用的if語句。

方式:

if 判斷條件1
then
?條件1為真的分支代碼

elif 判斷條件2
then
?條件2為真的分支代碼

elif 判斷條件3;then
?條件3為真的分支代碼

...
else
?以上條件都為假的分支代碼 ?托底

fi

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

三、case分支

case 語句可以使腳本程序的結(jié)構(gòu)更加清晰、層次分明,常用于服務(wù)的啟動(dòng)、重啟、停止的腳本,有的服務(wù)不提供這種控制腳本,需要用case語句編寫。
case 語句主要適用于以下情況: 某個(gè)變量存在多種取值,需要對(duì)其中的每一種取值分別執(zhí)行不同的命令序列。這種情況與多分支的 if 語句非常相似,只不過 if 語句需要判斷多個(gè) 不同的條件,而 case 語句只是判斷一個(gè)變量的不同取值。

1、case語句結(jié)構(gòu)

case 變量值 in 
模式一)
   命令序列
;;
模式二)
   命令序列 
;;
……
*)
   默認(rèn)命令序列
esac

2、case注意事項(xiàng)

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

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

小實(shí)驗(yàn):

石頭剪刀布

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

雞兔同籠

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

yes or no

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

判斷服務(wù)是否開啟

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

判斷是否安裝

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維

Linux系統(tǒng)Shell腳本編程之條件語句,linux,git,運(yùn)維文章來源地址http://www.zghlxwxcb.cn/news/detail-824668.html

到了這里,關(guān)于Linux系統(tǒng)Shell腳本編程之條件語句的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux——Shell腳本編程(1)

    Linux——Shell腳本編程(1)

    1)Linux運(yùn)維工程師在進(jìn)行服務(wù)器集群管理時(shí),需要編寫Shell程序來進(jìn)行服務(wù)器管理。 2)對(duì)于 JavaEE 和 Python 程序員來說,工作的需要,要求你編寫一些 Shell腳本進(jìn)行程序或者是服務(wù)器的維護(hù),比如編寫一個(gè)定時(shí)備份數(shù)據(jù)庫的腳本。 3) 對(duì)于大數(shù)據(jù)程序員來說,需要編寫Shell程序來管

    2024年02月09日
    瀏覽(44)
  • Linux_5_Shell腳本編程

    Linux_5_Shell腳本編程

    程序:算法+數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù):是程序的核心 算法:處理數(shù)據(jù)的方式 數(shù)據(jù)結(jié)構(gòu): 數(shù)據(jù)在計(jì)算機(jī)中的類型和組織方式 面向過程語言 做一件事情,排出個(gè)步驟,第一步干什么,第二步干什么,如果出現(xiàn)情況A,做什么處理,如果出現(xiàn)了情況B,做什么處理 問題規(guī)模小,可以步驟化,按部

    2024年02月13日
    瀏覽(19)
  • Linux實(shí)驗(yàn)4 shell腳本編程基礎(chǔ)

    Linux實(shí)驗(yàn)4 shell腳本編程基礎(chǔ)

    1.假設(shè)在/tmp下有以當(dāng)前用戶的帳號(hào)命名的目錄,請(qǐng)?jiān)诿钚兄信R時(shí)修改環(huán)境變量PATH的值,要求該目錄的路徑附加到該變量的最后。 2.請(qǐng)?jiān)诿钚兄信R時(shí)設(shè)置命令輸入提示行格式為:“當(dāng)前系統(tǒng)時(shí)間-用戶#”。 3.在命令行定義一個(gè)字符串變量str,并且賦值為“test for shell”,然

    2024年04月17日
    瀏覽(20)
  • 【Linux命令行與Shell腳本編程】第十六章 Shell函數(shù)

    【Linux命令行與Shell腳本編程】第十六章 Shell函數(shù)

    腳本函數(shù)基礎(chǔ) 函數(shù)返回值 在函數(shù)中使用變量 數(shù)組變量和函數(shù) 函數(shù)遞歸 創(chuàng)建庫 在命令行中使用函數(shù) 可以將shell腳本代碼放入函數(shù)中封裝起來,這樣就能在腳本的任意位置多次使用. 函數(shù)是一個(gè)腳本代碼塊,可以并在腳本中的任何位置重用它。當(dāng)需要在腳本中使用該代碼塊時(shí)

    2024年02月14日
    瀏覽(39)
  • Linux shell編程學(xué)習(xí)筆記29:shell自帶的 腳本調(diào)試 選項(xiàng)

    Linux shell編程學(xué)習(xí)筆記29:shell自帶的 腳本調(diào)試 選項(xiàng)

    Linux shell腳本的調(diào)試方法比較多,上次我們探討和測試了shell內(nèi)建命令set所提供的一些調(diào)試選項(xiàng),其實(shí) shell 本身也提供了一些調(diào)試選項(xiàng)。我們以bash為例來看看。 purleEndurer @ csdn ~ $ bash --help GNU bash, version 4.2.46(2)-release-(x86_64-redhat-linux-gnu) Usage: ?bash [GNU long option] [option] ... ? ? ?

    2024年02月04日
    瀏覽(16)
  • 【Linux命令行與Shell腳本編程】第十四章,呈現(xiàn)數(shù)據(jù)

    【Linux命令行與Shell腳本編程】第十四章,呈現(xiàn)數(shù)據(jù)

    第十四章 呈現(xiàn)數(shù)據(jù) 1.1,標(biāo)準(zhǔn)文件描述符 文件描述符 縮寫 描述 0 STDIN 標(biāo)準(zhǔn)輸入 1 STDOUT 標(biāo)準(zhǔn)輸出 2 STDERR 標(biāo)準(zhǔn)錯(cuò)誤 1.1.1,STDIN 標(biāo)準(zhǔn)輸入 1.1.2,STDOUT 標(biāo)準(zhǔn)輸出 1.1.3,STDERR 錯(cuò)誤輸出 1.2,重定向錯(cuò)誤 1.2.1.只重定向錯(cuò)誤 n 1.2.2.重定向錯(cuò)誤消息和正常輸出 2.1,臨時(shí)重定向 2.2,永久重定向 exec 4

    2023年04月25日
    瀏覽(25)
  • linux|shell編程|shell腳本內(nèi)的加減乘除運(yùn)算實(shí)現(xiàn)示例

    shell腳本內(nèi)的加減乘除是由于在編寫kubernetes巡檢腳本的時(shí)候,某些部分需要做一點(diǎn)簡單的運(yùn)算,突然發(fā)現(xiàn)我其實(shí)對(duì)這些不太熟悉。 因此,查閱了一些資料,現(xiàn)在就加減乘除運(yùn)算在shell腳本內(nèi)如何應(yīng)用做一個(gè)簡單的總結(jié),寫的不對(duì)的地方請(qǐng)各位輕點(diǎn)噴 首先,我們看一個(gè)錯(cuò)誤的示

    2024年02月17日
    瀏覽(19)
  • 【Linux命令行與Shell腳本編程】第十九章 正則表達(dá)式

    【Linux命令行與Shell腳本編程】第十九章 正則表達(dá)式

    正則表達(dá)式基礎(chǔ) 定義BRE模式 擴(kuò)展正則表達(dá)式 在sed和gawk中創(chuàng)建正則表達(dá)式,以得到所需的數(shù)據(jù)。 正則表達(dá)式是一種可供Linux工具過濾文本的自定義模板,使用元字符來描述數(shù)據(jù)流中的一個(gè)或多個(gè)字符. Linux工具(比如sed或gawk)會(huì)在讀取數(shù)據(jù)時(shí)使用正則表達(dá)式對(duì)數(shù)據(jù)進(jìn)行模式匹配

    2024年02月13日
    瀏覽(24)
  • Linux shell編程學(xué)習(xí)筆記14:編寫和運(yùn)行第一個(gè)shell腳本hello world!

    Linux shell編程學(xué)習(xí)筆記14:編寫和運(yùn)行第一個(gè)shell腳本hello world!

    ?* 20231020?寫這篇博文斷斷續(xù)續(xù)花了好幾天,為了說明不同shell在執(zhí)行同一腳本文件時(shí)的差別,我分別在csdn提供線上Linux環(huán)境 (使用的shell是zsh)和自己的電腦上(使用的shell是bash)做測試。功夫不負(fù)有心人,在其中一些實(shí)例中可以體現(xiàn)出zsh和bash的對(duì)腳本文件支持的差別,收

    2024年02月07日
    瀏覽(29)
  • 【Linux編程Shell自動(dòng)化腳本】03 shell四劍客(find、sed、grep、awk)

    語法格式 參數(shù)說明 : path 是要查找的目錄路徑,可以是一個(gè)目錄或文件名,也可以是多個(gè)路徑,多個(gè)路徑之間用空格分隔,如果未指定路徑,則默認(rèn)為當(dāng)前目錄。 expression 是可選參數(shù),用于指定查找的條件,可以是文件名、文件類型、文件大小等等。 1. 常用expression 以下列出

    2024年02月09日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包