05 03 bash指令碼程式設計之二 條件判斷

2021-09-21 03:11:51 字數 3609 閱讀 7922

條件判斷:

如果使用者不存在,新增使用者,給密碼並顯示新增成功

否則,顯示如果已經存在,不用新增。

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...