5.3 shell程式設計2
條件判斷:
如果使用者不存在
添加使用者,給密碼并顯示添加成功
否則
顯示如果已經存在,沒有添加
bash中如何實作條件判斷?
條件測試類型:
整數測試
字元測試
檔案測試
條件測試的表達式:
[ expressopm ] 前後一定有空格
` expressopm `
test expression
整數比較:
-eq:測試兩個整數是否相等;相等為真0比如 $A -eq $B
-ne:測試兩個整數是否不等;不等,為真0,相等,假
-gt:測試一個數是否大于另一個數:大于,為真
-lt:測試一個數是否小于另一個數
-ge:大于或等于
-le:小于或等于
指令間的邏輯關系:
邏輯與: &&
第一個條件為假時,第二條件不用再判斷,最終結果已經有:
第一個條件為真時,第二條件必須得判斷
邏輯或: ||
id user1 &> /dev/null && echo "Hello,student."
如果使用者user6不存在,就添加使用者user6
! id user6 && useradd user6
id user6 || useradd user6
變量名稱:隻能包含字母、數字和下劃線,并且不能以數字開頭,不應該跟
系統中已有的環境變量重名
最好做到見名知義
nano second.sh
#!/bin/bash
LINES = 'wc -l /etc/inittab'
#echo $LINES
FINLINES = 'echo $LINES | cut -d ' ' -f1'
#echo $FINLINES
[ $FINLINES -gt 100 ] && echo "/etc/inittab is a big file."
|| echo "/etc/inittab is a small file."
如果使用者存在,就顯示使用者已存在;否則,就添加此使用者:
id user1 && echo "user1 exists." || useradd user1
如果使用者不存在,就添加:否則,顯示其已經存在
! id user1 && useradd user1 || echo "user1 exists."
如果使用者不存在,添加并且給密碼,否則,顯示其已經存在
! id user1 && useradd user1 && echo "user1" | passwd --stdin user1 ||
echo "user1 exists."
練習,寫一個腳本,完成以下要求:
1 添加3個使用者user1,user2,user3;但要先判斷使用者是否存在,
不存在而後再添加
2 添加完成後,顯示一共添加了幾個使用者:當然,不能包括因為事先
存在而沒有添加的
3 最後顯示目前系統上共有多少個使用者
nano adduser.sh
! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd
--stdin user1 &> /dev/null || echo "user1 exists."
! id user2 &> /dev/null && useradd user2 && echo "user2" | passwd
--stdin user2 &> /dev/null || echo "user2 exists."
! id user3 &> /dev/null && useradd user3 && echo "user3" | passwd
--stdin user3 &> /dev/null || echo "user3 exists."
USERS = 'wc -l /etc/passwd | cut -d: -f1'
echo "$USERS users."
如果 UID為0:那麼
顯示為管理者
否則
顯示為普通使用者
NAME = user16
USERID = `id -u $NAME` (~下的反引号) 指令引用表示指令的執行結果
if[ $USERID -eq 0 ];then
echo "Admin"
else
echo "common user."
fi
反引号引用表示指令的執行結果
沒有反引号表示指令的執行狀态(是否成功)
if id $NAME;then
練習 寫一個腳本,完成以下要求:
給定一個使用者:
1 如果其UID為0,就顯示此為管理者
2 否則,就顯示其為普通使用者
nano third.sh
#
NAME = user1
USERID =`id -u $NAME`
[ $USERID -eq 0 ] && echo "Admin" || echo "Common user."
條件判斷,控制結構:
單分支if語句
if 判斷條件;then (then寫下一行,分号可以省略)
statement1
statement2
...
雙分支的if語句:
if 判斷條件;then
statement3
statement4
nano tt.sh
if id $NAME &> /dev/null;then
echo "$NAME EXISTS."
useradd $NAME
echo $NAME | passwd --stdin $NAME &> /dev/null
echo "Add $NAME finished."
練習:寫一個腳本,完成以下任務
1 使用一個變量儲存一個使用者名
2 删除此變量中的使用者,且一并删除其家目錄
3 顯示“使用者删除完成”類的資訊
本文轉自飛行萌51CTO部落格,原文連結:http://blog.51cto.com/8527508/1940641 ,如需轉載請自行聯系原作者