shell指令碼之if使用語句進行條件測試

2021-09-25 20:00:15 字數 2139 閱讀 9081

使用test測試命令時,多數使用 「 [ 條件表示式 ] 」,條件表示式與方括號之間至少需要有乙個空格。

1、檔案測試:

2、整數值比較:

3、字元創比較:

4、邏輯測試:

一、單分支if語句:

執行過程:

單分支if語句示例:

[root@localhost ~]# vim chkconfig.sh                

#!/bin/bash

dir="/media/cdrom" #定義乙個變數

if [ ! -d $dir ] #定義乙個測試條件

then #如果滿足則執行下面的命令

mkdir $dir

fi[root@localhost ~]# sh chkconfig.sh #執行指令碼,進行測試

[root@localhost ~]# ls /media

cdrom

二、雙分支if語句:執行過程:

雙分支if語句示例:

[root@localhost ~]# vim pinghost.sh

#!/bin/bash

ping -c 3 -i 0.2 -w 3 $1 &> /dev/null #ping 3次,間隔0.2秒,超時3秒,$1為位置變數

if [ $? -eq 0 ] #測試條件為前一條的命令執行成功

then #如果成功,則執行以下命令

echo "主機$當前狀態為up"

else #若不成功,則執行以下命令

echo "主機$當前狀態為down"

fi[root@localhost ~]# sh pinghost.sh 192.168.1.1

主機192.168.1.1當前狀態為up

[root@localhost ~]# sh pinghost.sh 192.168.1.2

主機192.168.1.2當前狀態為down

三、多分支if語句:執行過程:

多分支if語句示例:

[root@localhost ~]# vim gradediv.sh

#!/bin/bash

read -p "請輸入您的分數:" grade

if [ $grade -ge 85 ] && [ $grade -le 100 ]

then

echo "$ 分,優秀!"

elif [ $grade -ge 70 ] && [ $grade -le 84 ]

then

echo "$ 分,及格!"

else

echo "$ 分,不及格"

fi[root@localhost ~]# . gradediv.sh

請輸入您的分數:11

11 分,不及格

[root@localhost ~]# . gradediv.sh

請輸入您的分數:77

77 分,及格!

[root@localhost ~]# . gradediv.sh

請輸入您的分數:88

88 分,優秀!

Shell指令碼常用語句

指令碼測試 window 回車是 r n linux 回車是 n yum install y dos2unix 軟體 命令 dos2unix 指令碼名 處理 sh x 與 set x 開始 set x 結束 顯示指令碼執行過程 一.變數 1.區域性變數 只在乙個範圍內使用 普通變數 file ls ...

shell 指令碼之if for while語句

1 if語句 root ubuntu mnt shared shellbox shellif cat shellif.sh bin bash 推斷字串 if 1 hello then echo 1 1 fi 推斷數字,if 方式僅僅能在bash下用,在sh下不行 if 1 20 then echo ...

shell指令碼之expect語句

在編寫shell指令碼時,我們可能會遇到一些互動式的情況,如passwd ssh等等指令碼時,常常需要手動進行互動。這樣,原本為了實現自動部署的指令碼顯得有些不大方便,這時你就會用上expect命令了。expect命令可以幫你把互動式命令變成非互動式。expect 有期待 期望的中文意思。正如它的中...