shell 條件測試

2022-01-10 06:17:40 字數 2155 閱讀 4092

1、檔案相關

-e 判斷檔案或者資料夾是否存在

-d 判斷目錄是否存在

-f 判斷檔案是否存在

-r 判斷是否有讀許可權

-w 判斷是否有寫許可權

-x 判斷是否有執行許可權

1.1命令列使用
[root@localhost ~]# [ ! -e test/ ] && mkdir test/ #如果test/資料夾並存在,就建立。
1.2指令碼中使用,一般配合條件控制語句使用。
[root@localhost script]# cat m_t.sh 

#!/bin/bash

#移動指令碼檔案至指定資料夾

ls *.sh > sh.txt

if [ ! -d script/ ];then

mkdir script/

fifor i in `cat sh.txt`

do echo $i

mv $i script/

done

2、數字相關
-gt 大於

-ge 大於等於

-eq 等於

-lt 小於

-le 小於等於

-ne 不等於

2.1、小指令碼,記憶體使用率超過80%則提醒
[root@localhost script]# cat mem.sh 

#!/bin/bash

mem_use=`free -m|grep "^m"|awk ''|cut -d . -f1`

if [ $mem_use -ge 80 ];then

echo -e "\e[1;5m \e[1;31m the memory used is more then 80%\e[0m \e[0m"

else

echo -e "\e[1;5m \e[1;32m the memory used is correct...\e[0m \e[0m"

fi

3、字串相關
-z 判斷字串是否為空,為空返回 true

-n 判斷字串是否為空,非空返回 true

== 判斷兩個字串是否相等 相等返回 true

!= 判斷兩個字串是否相等 不相等返回true

3.1、命令列使用
[root@localhost ~]# name=

[root@localhost ~]# [ -z "$name" ];echo $?

0[root@localhost ~]# [ -n "$name" ];echo $?

1

4、邏輯相關
-a 幾個條件都成立,才為真

-o 條件只要乙個為真,即為真

! 非

4.1、命令列使用
[root@localhost ~]# [ 2 -gt 1 -a -z "$name" ] && echo ok

ok

5、正則相關
格式:

[[ $name =~ 正規表示式]]

5.1、命令列使用
[root@localhost ~]# num=123

[root@localhost ~]# [[ $num =~ ^[0-9]+ ]] && echo ok

ok

新增使用者指令碼
#!/bin/bash

read -p "請輸入使用者字首,密碼,數量:" pre pass num

if [[ ! $num =~ ^[0-9]+ ]];then

ehco "請輸入數字"

ficat if [ $? -ne 0 ];then

useradd $pre$i

echo "使用者 $pre$i 建立成功..."

echo $pass|passwd --stdin $pre$i &>/dev/null

else

continue

echo "使用者 $pre$i 已經存在..."

fidone

break

;;n|no)

exit 1

;;*) echo "錯誤輸入,請重新輸入..."

esac

done

shell條件測試

shell條件測試通常都會用在for while until if等控制流結構中,用於判斷檔案的相關性質或變數的相互關係。條件測試用法 test 表示式 結果 成立返回0,不成立返回非0 檢視結果 echo 以下是幾類常用的測試表示式 1 檔案狀態測試 b filename 當filename 存在...

shell條件測試

shell條件測試 檔案狀態測試 b filename 當filename 存在並且是塊檔案時返回真 返回0 c filename 當filename 存在並且是字元檔案時返回真 d pathname 當pathname 存在並且是乙個目錄時返回真 e pathname 當由pathname 指定的...

shell條件測試

1.數值測試 數值判斷的格式如下 數值1 關係運算子 數值2 方括號與條件之間必須要有空格 eq 兩個數值相等 lt 第乙個數值小於第二個數值 ne 兩個數值不相等 ge 第乙個數值大於第二個數值 gt 第乙個數值不小於第二個數值 le 第乙個數值不大於第二個數值 例 100 eq 100 echo...