寫一個腳本:
1、添加10個用戶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
擴展:
接收一個參數:
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
模擬選項和參數(逗號隔開)添加用戶
#!/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
一、條件測試內容回顧
? ?1、整數測試
? ? ? ?-le, -lt, -ge, -gt, -eq, -ne
? ?2、字符測試
? ? ? ?==, !=, >, <, -n, -z
? ?3、文件測試
? ? ? ?-e, -f, -d, -r, -w, -x
二、組合測試條件
? ?1、-a:與關系;
? ?2、-o:或關系;
? ?3、!:非關系;
? ? ? ?如:給定參數大于1小于3,如何表達:
? ? ? ? ? ?if [ $# -gt 1 -a $# -le 3]
? ? ? ?或: ?if [ $# -gt 1] && [ $# -le 3 ]
練習3,寫腳本:
? ?傳遞一個參數(單字符就行)給腳本,如參數為q、Q、quit或Quit,就退出腳本;
? ?否則,就顯示不能識別的參數;
# 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
三、運算符
? ?1、SUM=$[$SUM+$I]相當于let SUM+=$I;
? ? ? ?let I+=1相當于let I++
? ?2、取模
? ? ? ?-= let I-=相當于let I--
? ? ? ?*=
? ? ? ?/=
? ? ? ?%=
練習4,寫腳本:
? ?計算100以內所有奇數和所有偶數的和,并分別顯示;
# 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."