07_02_bash腳本編程之六 使用腳本選項(xiàng)及組合條件測(cè)試

寫一個(gè)腳本:

1、添加10個(gè)用戶user1到user10,密碼同用戶名,但要求只有用戶不存在情況下才能添加

#!/bin/bash

#

for I in {1..10}; do

? ? ? ? if id user$I &> /dev/null;then

? ? ? ? ? echo "user$I exists."

? ? ? ? else

? ? ? ? ? useradd user$I

? ? ? ? ? echo user$I | passwd --stdin user$I &> /dev/null

? ? ? ? ? echo "add user user$I finished."

? ? ? ? fi ?

done

擴(kuò)展:

接收一個(gè)參數(shù):

add:添加用戶 user1..user10

del:刪除用戶 user1..user10

其他退出

#!/bin/bash

# ? ? ? ? ??

if ?[ $# -lt 1 ]; then

? ? ? ? echo "Usage: demo ARG"

? ? ? ? exit 7

fi ? ? ?


if [ $1 == '--add' ]; then

? ? ? ? for I in {1..10};do

? ? ? ? ? if id user$I &> /dev/null; then

? ? ? ? ? ? echo "user$I exists."

? ? ? ? ? else

? ? ? ? ? ? useradd user$I?

? ? ? ? ? ? echo user$I | passwd --stdin user$I &> /dev/null

? ? ? ? ? ? echo "add user user$I finished."

? ? ? ? ? fi

? ? ? ? done

elif [ $1 == '--del' ]; then

? ? ? ? for I in {1..10}; do

? ? ? ? ? if id user$I &> /dev/null; then

? ? ? ? ? ? userdel -r user$I

? ? ? ? ? ? echo "delete user$I finished."

? ? ? ? ? ?else

? ? ? ? ? ? echo "no user$I"

? ? ? ? ? ?fi

? ? ? ? done

else

? ? ? ? echo "unknow arg"

? ? ? ? exit 8

fi

模擬選項(xiàng)和參數(shù)(逗號(hào)隔開)添加用戶

#!/bin/bash

#

if [ $1 == '--add' ]; then

? for I in `echo $2 | sed 's/,/ /g'`;do

? ? if id $I &> /dev/null; then

? ? ? echo "$I exists."

? ? else

? ? ? useradd $I

? ? ? echo $I | passwd --stdin $I &> /dev/null

? ? ? echo "add $I finished."

? ? fi ?

? done

elif [ $1 == '--del' ]; then

? for I in `echo $2 | sed 's/,/ /g'`; do

? ? if id $I &> /dev/null; then

? ? ? userdel -r $I

? ? ? echo "delete $I finished."

? ? else

? ? ? echo "$I not exists."

? ? fi ?

? done

elif [ $1 == '--help' ]; then

? echo "Usage:demo.sh --add USER1,SUER2... | --del USER1,USER2... | --help"

else

? echo "unkonw options"

fi

一、條件測(cè)試內(nèi)容回顧

? ?1、整數(shù)測(cè)試

? ? ? ?-le, -lt, -ge, -gt, -eq, -ne

? ?2、字符測(cè)試

? ? ? ?==, !=, >, <, -n, -z

? ?3、文件測(cè)試

? ? ? ?-e, -f, -d, -r, -w, -x

二、組合測(cè)試條件

? ?1、-a:與關(guān)系;

? ?2、-o:或關(guān)系;

? ?3、!:非關(guān)系;

? ? ? ?如:給定參數(shù)大于1小于3,如何表達(dá):

? ? ? ? ? ?if [ $# -gt 1 -a $# -le 3]

? ? ? ?或: ?if [ $# -gt 1] && [ $# -le 3 ]

練習(xí)3,寫腳本:

? ?傳遞一個(gè)參數(shù)(單字符就行)給腳本,如參數(shù)為q、Q、quit或Quit,就退出腳本;

? ?否則,就顯示不能識(shí)別的參數(shù);

# vim quit.sh

#!/bin/bash

#

if [ $1 == 'q' -o $1 == 'Q' -o $1 == 'quit' -o $1 == 'Quit' ];then

? ? ? ?echo "Quiting..."

? ? ? ?exit 0

else

? ? ? ?echo "Unknow Argument."

? ? ? ?exit 1

fi

三、運(yùn)算符

? ?1、SUM=$[$SUM+$I]相當(dāng)于let SUM+=$I;

? ? ? ?let I+=1相當(dāng)于let I++

? ?2、取模

? ? ? ?-= let I-=相當(dāng)于let I--

? ? ? ?*=

? ? ? ?/=

? ? ? ?%=

練習(xí)4,寫腳本:

? ?計(jì)算100以內(nèi)所有奇數(shù)和所有偶數(shù)的和,并分別顯示;

# vim sum.sh

#!/bin/bash

#

declare -i SUM1=0

declare -i SUM2=0

for I in `seq 1 100`;do

? ? ? ?if [ $[$I%2] == 0 ];then

? ? ? ? ? ? ? ?SUM1=$[$SUM1+$I]

? ? ? ?else

? ? ? ? ? ? ? ?SUM2=$[$SUM2+$I]

? ? ? ?fi

done

echo "The even sum is $SUM1."

echo "The obb sum is $SUM2."

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容