bash中如何實現條件判斷?
express
條件測試類型:bash
整數測試
ide
字符測試
測試
文件測試
it
條件測試的表達式:io
[ expression ]
class
[ [ expression ] ]
test
test expression
變量
整數比較:file
-eq :測試兩個整數是否相等;例如 $A -eq $B 相等爲真(0),不等爲假
[root@localhost ~]# A=2
[root@localhost ~]# B=3
[root@localhost ~]# [ $A -eq $B ]
[root@localhost ~]# echo $?
1
-ne:測試兩個整數是否不相等;不等爲真(0),等則爲假(1)。
-gt:測試一個數是否大於另外一個數;大於爲真(0),不然爲假(1-255)。
-lt:測試一個數是否小於另外一個數;小於爲真(0),不然爲假(1-255)。
-ge:大於或等於。
-le:小於或等於。
命令間的邏輯關係:
邏輯與:&&
第一個條件爲假,第二個條件不用判斷,最終結果已經有。
第一個條件爲真,第二個條件必須判斷。
邏輯或:||
例:若是用戶user5不存在,就添加用戶user5
# ! id user5 && useradd user5
或
#id user5 || useradd user5
例:若是/etc/inittab文件的行數大於20,就顯示大文件;
# [ `wc -l /etc/inittab | cut -d' ' -f1` -gt 20 ] && echo "large file"
large file
變量名稱準則:
一、只能包含字母、數字和下劃線,而且不能數字開頭。
二、不該該跟系統已有的環境變量重名。
三、最好作到見名知意。
例:若是用戶存在,就顯示用戶已存在;不然就添加此用戶
# id user1 && echo "user1已存在" || useradd user1
例:若是用戶不存在,就添加此用戶;不然就顯示用戶已存在;
# ! id user2 && useradd user2 || echo "user2已存在"
例:若是用戶不存在就添加此用戶並給密碼,不然就顯示用戶已存在
#!id user3 && useradd user3 && echo "user3" | passwd --stdin user3 || echo "user3已存在"
例:添加用戶user1 user2 user3;但要先判斷用戶是否存在,不存在就添加用戶 ,再顯示一共多少個用戶。
#!/bin/bash
! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &>dev/null ||$
! id user2 &> /dev/null && useradd user2 && echo "user2" | passwd --stdin user2 &>dev/null ||$
! id user3 &> /dev/null && useradd user3 && echo "user3" | passwd --stdin user3 &>dev/null ||$
users=`wc -l /etc/passwd | cut -d' ' -f1`
echo "$users users."
例:給定一個用戶
一、若是其UID爲0,就顯示爲管理員;
二、不然,就顯示爲普通用戶
#!/bin/bash
#
name=user1
userid=`id -u $name`
[ $userid -eq 0 ] && echo "admin" || echo "common user"
條件判斷,控制結構:
單分支if語句
if判斷條件
if 判斷條件; then then
statement1 statement1
statement2 或 statement2
...... ......
fi fi
雙分支的if語句:
if判斷條件
if判斷條件; then then
statement1 stament1
statement2 stament2
...... ......
else 或 else
statement3 stament3
statement4 stament4
...... ......
fi fi