日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

if shell 条件语句简写_Shell if条件判断语句用法详解

發(fā)布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 if shell 条件语句简写_Shell if条件判断语句用法详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

if 條件判斷在語言中最為常見,主要用于判斷條件是否成立,比如在課堂上,并不是所有的學(xué)員都可以進(jìn)入教室,而是必須符合條件(如必須是本班級學(xué)員)才能進(jìn)入教室。當(dāng)然,在上課時,是通過人的大腦進(jìn)行判斷的;如果在程序語言中,就要通過 if 條件判斷語句來判斷了。

單分支 if 條件語句

單分支 if 條件語句最為簡單,就是只有一個判斷條件,如果符合條件則執(zhí)行某個程序,否則什么事情都不做。語法如下:

if [條件判斷式];then

程序

fi

在使用單分支 if 條件查詢時需要注意幾點:

if 語句使用 fi 結(jié)尾,和一般語言使用大括號結(jié)尾不同。

[條件判斷式] 就是使用 test 命令判斷,所以中括號和條件判斷式之間必須有空格。

then 后面跟符合條件之后執(zhí)行的程序,可以放在 [] 之后,用":"分隔;也可以換行寫入,就不需要":"了,比如單分支 if 條件語句還可以這樣寫:

if [條件判斷式]

then

程序

fi

單分支 if 條件語句非常簡單,但是千萬不要小看它,這是流程控制語句最基本的語法。而且在實現(xiàn) Linux 管理時,我們的管理腳本一般都不復(fù)雜,單分支 if 條件語句使用的概率還是很大的。

舉個例子,我想通過腳本判斷根分區(qū)的使用率是否超過 80%,如果超過 80% 則向管理員報警,請他注意。 腳本就可以這樣寫:

[root@localhost ~]# df -h

#查看一下服務(wù)器的分區(qū)狀況

文件系統(tǒng) 容量 已用 可用 已用% %掛載點

/dev/sda3 20G 1.8G 17G 10% /

tmpfs 306M 0 306M 0% /dev/shm

/dev/sda1 194M 26M 158M 15% /boot

/dev/srO 3.5G 3.5G 0100% /mnt/cdrom

[root@localhost ~]# vi sh/if1.sh

#!/bin/bash

#統(tǒng)計根分區(qū)的使用率

rate=$(df -h | grep "/dev/sda3" | awk '{print $5}' | cut -d"%"-f1)

#把根分區(qū)使用率作為變量值賦予變量rate

if [$rate -ge 80 】

#判斷rate的值,如果大于等于80,則執(zhí)行then程序

then

echo 'Warning! /dev/sda3 is full!!"

#打印警告信息。在實際工作中,也可以向管理員發(fā)送郵件

fi

其實這個腳本最主要的地方是"rate=$(df-h|grep "/dev/sda3"|awk'{print$5}'|cut-d"%"-f1)"這條命令,我們來分析一下這條命令:先使用"df-h"列出系統(tǒng)中的分區(qū)情況;然后使用"grep"命令提取出根分區(qū)行;再使用"awk"命令列出第五列,也就是根分區(qū)使用率這一列(不過使用率是 10%,不好比較,還要提取出 10 這個數(shù)字);最后使用"cut"命令(cut 命令比 awk 命令簡單),以"%"作為分隔符,提取出第一列。

這條命令的執(zhí)行結(jié)果如下:

[root@localhost ~]# df -h | grep "/dev/sda3" |awk'{print $5}'|cut -d"%" -f1 10

提取出根分區(qū)的使用率后,判斷這個數(shù)字是否大于等于 80,如果大于等于 80 則報警。至于報警信息,我們在腳本中直接輸出到屏幕上。在實際工作中,因為服務(wù)器屏幕并不是 24 小時有人值守的,所以也可以給管理員發(fā)送郵件,用于報警。

腳本寫好之后,就可以利用我們在前面章節(jié)中講到的系統(tǒng)定時任務(wù),讓這個腳本每天或幾天執(zhí)行一次,就可以實現(xiàn)自動檢測硬盤剩余空間了。后續(xù)的系統(tǒng)管理的腳本,如果需要重復(fù)執(zhí)行,則也需要依賴系統(tǒng)定時任務(wù)。

雙分支條件語句

在雙分支 if 條件語句中,當(dāng)條件判斷式成立時,則執(zhí)行某個程序;當(dāng)條件判斷式不成立時,則執(zhí)行另一個程序。

語法如下:

if [條件判斷式]

then

當(dāng)條件判斷式成立時,執(zhí)行的程序

else

當(dāng)條件判斷式不成立時,執(zhí)行的另一個程序

fi

例如,還記得我們在進(jìn)行條件測試時是怎么顯示測試結(jié)果的嗎?

[root@localhost ~]# [-d /root/sh] && echo "yes" || echo "no"

#第一條判斷命令如果正確執(zhí)行,則打印"yes"; 否則打印"no"

yes

這樣顯示條件測試的結(jié)果還是非常不方便的。當(dāng)時是因為我們還沒有講 if 語句,所以只能用邏輯與和邏輯或來顯示測試結(jié)果。既然我們已經(jīng)學(xué)習(xí)了 if 語句,就把這個條件測試改寫為 if 語句吧。

#!/bin/bash

#判斷輸入的文件是否是一個目錄

read -t 30 -p "Please input a directory:" dir #read接受鍵盤的輸入,并存入dir變量

if[-d $dir]

#測試$dir中的內(nèi)容是否是一個目錄

then

echo "yes"

#如果是一個目錄,則輸出yes

else

echo "no"

#如果不是一個目錄,則輸出no

fi

解釋一下這個腳本的思路:其實邏輯與和邏輯或也是在判斷前一條命令的"$?"的返回值是不是 0,如果是 0,則前一條命令正確執(zhí)行;如果不是 0,則證明前一條命令執(zhí)行錯誤。雙分支if條件語句的判斷思路也是測試條件判斷式是否成立,如果成立,則執(zhí)行"then"中的命令;如果不成立,則執(zhí)行"else"中的命令。

多分支 if 條件語句

在多分支 if 條件語句中,允許執(zhí)行多次判斷。也就是當(dāng)條件判斷式 1 成立時,執(zhí)行程序 1;當(dāng)條件判斷式 2 成立時,執(zhí)行程序 2;依次類推,當(dāng)所有條件不成立時,執(zhí)行最后的程序。語法如下:

if[條件判斷式1]

then

當(dāng)條件判斷式1成立時,執(zhí)行程序1

elif [條件判斷式2]

then

當(dāng)條件判斷式2成立時,執(zhí)行程序2

…省略更多條件...

else

當(dāng)所有條件都不成立時,最后執(zhí)行此程序、

fi

例如,用多分支 if 條件語句來判斷用戶輸入的是一個個文件還是一個目錄。

[root@localhost ~]#vi sh/if-elif.sh

#!/bin/bash

#判斷用戶輸入的是什么文件

read -p "Please input a filename:" file

#接收鍵盤的輸入,并賦予變量file

if[-z "$file"]

#判斷file變量是否為空

then

echo "Error,please input a filename"

#如果為空,則執(zhí)行程序1,也就是輸出報錯信息、

exit 1

#退出程序,并定義返回值為1 (把返回值賦予變量$?)

elif[!-e "$file"]

#判斷file的值是否存在

then

echo 'Your input is not a file!"

#如果不存在,則執(zhí)行程序2

exit 2

#退出程序,并定義返回值為2

elif[-f "$file"]

#判斷file的值是否為普通文件

then

echo "$file is a regulare file!"

#如果是普通文件,則執(zhí)行程序3

elif[-d"$file"]

#判斷file的值是否為目錄文件

then

echo "$file is a directory!"

#如果是目錄文件,則執(zhí)行程序4

else

echo is an other file!"

#如果以上判斷都不是,則執(zhí)行程序5

fi

解釋一下腳本思路:這個腳本比較簡單,需要說明的是 exit 這條命令。這條命令是退出執(zhí)行程序的命令,如果符合條件 1(沒有輸入)和條件 2(輸入的不是文件),則需要執(zhí)行 exit 命令;否則程序還是會運行一下腳本的,這不符合我們的要求。至于 exit 后面的返回值,是自由定義的,主要用于把返回值賦予變量 $?。我們執(zhí)行一下這個腳本:

[root@localhost ~]# chmod 755 sh/if-elif.sh

#賦予執(zhí)行權(quán)限

[root@localhost ~]# sh/if-elif.sh

#執(zhí)行腳本

Please input a filename:

#沒有任何輸入

Error,please input a filename

#報錯信息是腳本中自己定義的

[root@localhost ~]# echo $?

1

#變量$?的返回值是我們自己定義的1

[root@localhost ~]# sh/if-elif.sh

Please input a filename: jkgeia

#隨便輸入不是文件的字符串

Your input is not a file!

#報錯信息是自己定義的

[root@localhost ~]# echo $?

2

#變量$?的返回值是我們自己定義的2

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的if shell 条件语句简写_Shell if条件判断语句用法详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。