1. 程式人生 > >學習筆記-5.3 shell編程2

學習筆記-5.3 shell編程2

shell編程2

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

#!/bin/bash

! 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

#!/bin/bash

#

NAME = user1


USERID =`id -u $NAME`

[ $USERID -eq 0 ] && echo "Admin" || echo "Common user."


條件判斷,控制結構:

單分支if語句

if 判斷條件;then (then寫下一行,分號可以省略)

statement1

statement2

...

fi


雙分支的if語句:

if 判斷條件;then

statement1

statement2

...

else

statement3

statement4

...

fi


nano tt.sh

#!/bin/bash

#

NAME = user1

if id $NAME &> /dev/null;then

echo "$NAME EXISTS."

else

useradd $NAME

echo $NAME | passwd --stdin $NAME &> /dev/null

echo "Add $NAME finished."

fi



練習:寫一個腳本,完成以下任務

1 使用一個變量保存一個用戶名

2 刪除此變量中的用戶,且一並刪除其家目錄

3 顯示“用戶刪除完成”類的信息


學習筆記-5.3 shell編程2