條件判斷:
如果使用者不存在,新增使用者,給密碼並顯示新增成功
否則,顯示如果已經存在,不用新增。
bash中如何實現條件判斷?
條件測試型別:
整數測試
字元測試
檔案測試
條件測試的表示式:
[ expression ]
` expression `
test expression
整數比較:
-eq:測試兩個整數是否相等;比如:$a -eq $b
#a=3
#b=6
#[ $a -eq $b ]
#echo $?
#b=3
#[ $a -eq $b ]
-ne:測試兩個整數是否不等,
-gt:測試乙個數是否大於另乙個數
-lt:測試乙個數是否小於另乙個數
-ge:大於或等於
-le:小於或等於
命令間的邏輯關係:
邏輯與:&&
第乙個條件為假時,第二條件不用再判斷,最終結果已經有
邏輯或:||
邏輯非:
#id user1 &>/dev/null && echo "hello,student."
#id student2 &>/dev/null && echo "hello,student2."
如果使用者user6不存在,就新增使用者user6
! id user6 && useradd user6
id user6 ||useradd user6
變數名稱
1、只能包含字母、數字和下劃線,並且不能數字開頭
2、不應該跟系統中已有的環境變數重名
3、最好做到風名知義
#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."
#chomd +x second.sh
#./second.sh
如果使用者存在,就顯示使用者存在,否則就新增此使用者
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."
練習一:
nano addusers2.sh
#!/bin/bash
! id user1 &> /dev/null && useradd user1 && echo "user1" |passwd -stdin user1 &>dev/null
|| echo "user1 exists."
! id user2 &> /dev/null && useradd user1 && echo "user2" |passwd -stdin user2&>dev/null
|| echo "user2 exists."
! id user3 &> /dev/null && useradd user3 && echo "user3" |passwd -stdin user2&>dev/null
|| echo "user3 exists."
users=`wc -l /etc/passwd|cut -d: f1`
echo "$users users."
#chmod +x adduser2.sh
#./adduser2.sh
#cat adduser2.sh
#nano third.sh
#!/bin/bash
name=user1
userid=`id -u $name`
[ $userid -eq 0 ] && echo "admin" ||echo "common user."
#chomod +x third.sh
#./third.sh
#cat ./third.sh
條件判斷,控制結構:
單分支的if語句
if 判斷條件; then
statement1
statement2
……fi
雙分支的if語句:
if 判斷條件;then
statement1
statement2
……else
statement3
statement4
……fi
if 判斷條件
then
statement1
statement2
……else
statement3
statement4
……fi
#clear
#nano usertest.sh
#!/bin/bash
name=user1
if id $name &> /dev/null; then
echo "$name exists."
fi#chmod +x usertest.sh
#./usertest.sh
#!/bin/bash
name=user1
if id $name &> /dev/null; then
echo "$name exists."
else
echo "$name not exist."
fi#chmod +x usertest.sh
#./usertest.sh
#!/bin/bash
name=user1
if id $name &> /dev/null; then
echo "$name exists."
else
useradd $name
echo $name |passwd --stdin $name &>/dev/nulls
echo "add $name finished."
fi#chmod +x usertest.sh
#./usertest.sh
name=user16
userid=`id -u $name`
if [ $userid -eq 0] ;then
else
finame=user16
if [ `id -u $name` -eq 0] ;then
else
fi#判定使用者是否存在
if id $name;then
#ls /var
#echo $?
#a=`ls /var`
#echo $a
bash指令碼程式設計之選項
bash指令碼程式設計之選項 getopts getopts 選項字串 名稱 引數 解析選項引數。getopts 被 shell 過程用於解析可定位的引數作為選項。optstring 字串包含待識別的選項字母 如果乙個字母後面跟 著冒號,則該選項期待乙個引數,而該引數應用空格與選項分開。每次啟動時,...
BASH指令碼程式設計之條件測試
條件測試 判斷某需求是否滿足,需要由測試機制來實現 如何編寫測試表示式以實現所需的測試 1 執行命令,並利用命令狀態返回值來判斷 0 成功 1 255 失敗 2 測試表示式 test expression expression expression 注意 expression兩端必須有空白字元,否則...
bash指令碼程式設計之case語句及指令碼選項高階
case語句及指令碼選項高階詳解 面向過程程式語言中的控制流 即程式當中的語句 預設是順序執行的。程式語言的控制結構一共有三類 1,順序結構 2,選擇結構 1 if語句 單分支的if語句 格式 if condition1 then expression fi 雙分支的if語句 格式 if condi...