shell指令碼程式設計之條件判斷

2021-10-12 08:45:39 字數 4142 閱讀 6637

1、shell指令碼學習(2)比較兩個數字大小----

2、linux 中清空或刪除大檔案內容的五種方法----

3、shell 清空檔案內容----

整數測試

字元測試

檔案測試

1、[ expression ]     命令測試

2、[[ expression ]] 關鍵字測試

3、test expression

-eq:測試兩個整數是否相等;相等為真,不等為假

-ne:測試兩個整數是否不等;不等為真,相等為假

-gt:測試乙個數是否大於另乙個數;大於為真,否則為假

-lt:測試乙個數是否小於另乙個數;小於為真,否則為假

-ge:大於或等於

-le:小於或等於

!:表示非(取反)

邏輯與:&&

邏輯或:||

cmd1 && cmd2

example:id aaa && echo "hello aaa"

如果&&前的執行結果是假,總的結果就是假,沒必要執行&&後的操作

如果cmd1成功了(真),就可執行cmd2

如果cmd1失敗了(假),就不執行cmd2

如果aaa使用者存在,則列印hello aaa;如果使用者aaa不存在,則不進行列印

cmd1 || cmd2

example:id aaa || useradd aaa

如果||前的執行結果是真,總的結果就是真,沒必要執行||後的操作cmd2

如果cmd1成功了(真),就不執行cmd2

如果cmd1失敗了(假),就可執行cmd2

如果使用者aaa存在,就不執行建立aaa使用者的命令;如果aaa使用者不存在,則建立該使用者

example:

id aaa && echo user aaa exists || useradd aaa

如果使用者aaa存在,列印user aaa exists;如果使用者不存在,則建立該使用者;&&前如果為真,則整個邏輯與為真,再與後面的命令做邏輯或;

!id aaa && useradd aaa || echo user aaa exists

取反;如果使用者不存在,則建立使用者;如果使用者存在,則列印user aaa exists;

!id bbb &>/dev/null && useradd aaa && echo 123456 | passwd --stdin bbb &>/dev/null || echo "bbb exists"

使用者不存在則建立使用者並且改密碼;使用者存在則列印bbb exists;

userid=`id -u bbb`;[ $userid -eq 0 ] && echo "admin" || echo "common"

如果bbb使用者的uid等於0,列印admin;不等於0,列印common;

if 判斷條件;then                        

statement1

statement2

...fiexample1:

#!/bin/bash

name=aaa

if id $name &>/dev/null;then #id $name取的是命令的執行狀態返回值;命令是否執行成功

echo "$name exists"

fi

if 判斷條件;then

statement1

statement2

...else

statement3

statement4

...fiexample2:

#!/bin/bash

name=aaa

userid=`id -u $name` #`id -u $name`取的是命令的執行結果

if [ $userid -eq 0 ];then #做等值判斷需要加"[ ]"

echo "$name is admin" #可以不新增$userid變數,寫為 [ `id -u $name` -eq 0 ]

else

echo "$name is common"

fiexample3:

#!/bin/bash

grep "bash$" /etc/passwd &>/dev/null

if [ $? -eq 0 ];then

auser=`grep "bash$" /etc/passwd | head -1 | cut -d: -f1`

echo "the user is $auser"

else

echo no such user

fi$?判斷上一條命令執行是否成功,如果成功則狀態返回值為0;當$?的狀態返回值等於0時,那麼限制乙個使用者,否則顯示沒有這樣的使用者

example4:

#!/bin/bash

username=user2

userid=`id -u $username`

groupid=`id -g $username`

if [ $userid -eq $groupid ];then

echo "good boy"

else

echo "bad boy"

fi判斷用的uid和gid是否相等,相等顯示good boy;不相等顯示bad boy

[root@localhost ~]# a=2

[root@localhost ~]# b=3

[root@localhost ~]# let c=$a+$b

[root@localhost ~]# echo $c

5

[root@localhost ~]# a=6

[root@localhost ~]# b=8

[root@localhost ~]# c=$[$a+$b]

[root@localhost ~]# echo $c

14

[root@localhost ~]# a=1

[root@localhost ~]# b=2

[root@localhost ~]# c=$(($a+$b))

[root@localhost ~]# echo $c

3

[root@localhost ~]# a=3

[root@localhost ~]# b=3

[root@localhost ~]# c=`expr $a + $b`

[root@localhost ~]# echo $c

6example:

[root@localhost ~]# timestamp=`date +%s`

[root@localhost ~]# let usedates=$timestamp/86400

[root@localhost ~]# echo $usedates

18234

example:

#!/bin/bash

username=user10

if ! grep "$username" /etc/passwd & >/dev/null;then #if會自動判斷後面命令的狀態返回值;0為真,1——255皆為假

echo "no such $username"

exit 1

fi沒有user10使用者,列印 no such user10,並且exit退出整個指令碼,狀態返回值定義為1

分類: shell指令碼

shell指令碼程式設計 變數補充 if條件判斷

shell指令碼程式設計 變數補充 if條件判斷 變數的型別 字串 數值 布林型別 null shell中指定變數的型別 declaredeclare 內建命令 用來宣告和修改變數的屬性 唯讀 readonly 設定為唯讀變數 declare r a 10 不能修改包括不能刪除 設定為數值變數 de...

shell程式設計 判斷條件

shell程式設計中有兩種形式進行對判斷條件進行測試 形式一 test 形式二 舉個小例子說明其用法及其注意事項 例子 判斷檔案 new.txt 是否存在,存在現實 exist 不存在現實 not exitst test e new.txt echo exist echo not exist e n...

Shell指令碼IF條件判斷和判斷條件總結

前言 無論什麼程式語言都離不開條件判斷。shell也不例外。如下 if list then do something here elif list then do another thing here else do something else here fiex1 bin sh system u...