for循環

    循環需要指定進入條件和退出條件、

    常用的循環有for,while,until

    for循循環

        for 變量 in 列表;do

            循環體

        done

        如何生成列表

        {1..100},表示1到100的整數列表    

        seq 10;表示1到10的整數列表

        seq 5 10;表示5到10的整數列表

        seq 1 2 10 ;表示1-10的奇數列表 ,步長爲2

        seq 2 2 10 ;表示1-10的偶數列表,步長爲2

        seq [起始數] [步進數] 結束數,需要命令替換

        `ls /etc`也可生成列表

    1、求1到100的整數之和

        聲明變量:declare 變量類型 變量名

    1)

    #!/bin/bash
    #
    let SUM=0
    #declare i SUM=0
    for I in {1..100};do
            let SUM=$[$SUM+$I]
    done
    echo "The sum is:$SUM"

    2)求100以內的偶數和奇數和

#!/bin/bash
#
declare -i evensum=0
declare -i oddsum=0
for I in {1..100};do
  if [ $[$I%2] -eq 0 ];then
    let oddsum+=$I
  else
    let evensum+=$I
  fi
done
echo "Oddsum is $oddsum"
echo "evensum is $evensum"


    2、寫一for循環,顯示當前系統的用戶名及其shell名稱

[root@station01 ~]# cat test19.sh 
#!/bin/bash
#
TOTALLINES=`wc -l /etc/passwd | cut -d' ' -f1`
for I in `seq 1 $TOTALLINES`;do
        SYSUSERNAME=`head -n $I /etc/passwd | tail -1 | cut -d: -f1`
        SYSSHELL=`head -n $I /etc/passwd| tail -1 | cut -d: -f7`
        echo "Hello,$SYSUSERNAME;--->>>Your shell is:$SYSSHELL;"
done

3、對第二題進行擴展,如只顯示shell爲/bin/bash的用戶

[root@station01 ~]# cat test20.sh 
#!/bin/bash
#
TOTALLINES=`wc -l /etc/passwd | cut -d' ' -f1`
for I in `seq 1 $TOTALLINES`;do
        SYSUSERNAME=`head -n $I /etc/passwd | tail -1 | cut -d: -f1`
        SYSSHELL=`head -n $I /etc/passwd| tail -1 | cut -d: -f7`
        if [ $SYSSHELL == "/bin/bash" ];then
            echo "Hello,$SYSUSERNAME;--->>>Your shell is:$SYSSHELL;"
        fi
done

    4、添加用戶user1-user10到當前系統,如果用戶存在則顯示用戶已存在,否則添加、設置密碼與用戶名相同並顯示加成功

#!/bin/bash
#
for I in {1..10};do
        if  ! id -u -n user$I &>/dev/null ;then
                useradd user$I
                echo "user$I" | passwd --stdin user$I &>/dev/null
                echo "Add user$I success."
        else
                echo "user$I is exist."
        fi
done

    5、刪除當前系統用戶user1-user10,如果用戶存在則刪除並顯示已刪除,否則顯示不存在

#!/bin/bash
#
for I in {1..10};do
        if id user$I &>/dev/null;then
                userdel -r user$I &>/dev/null
                echo "Delete user$I success."
        else
                echo "user$I is not exist."
        fi
done

    6、寫一腳本,通過參數傳遞,如爲"add"則在當前系統添加10個用戶並決斷用戶是否存在,如存在則顯示用戶存在,否則添加用戶並顯示添加成功;如爲"del",則刪除系統中的user1-user10,如不存在,則顯示用戶不存在,如已刪除顯示用戶已刪除。

#!/bin/bash
#
if [ $# -lt 1 ];then
        echo "Usage:administrator.sh ARG"
        exit 10
fi
if [ $1 == '--add' ];then
        for I in {1..10};do
                if id user$I &>/dev/null;then
                        echo "user$I is exist."
                else
                        useradd user$I &>/dev/null
                        echo "user$I" | passwd --stdin user$I &>/dev/null
                        echo "Add user$I success."
                fi
        done
elif [ $1 == '--del' ];then
        for I in {1..10};do
                if id user$I &>/dev/null;then
                        userdel -r user$I &>/dev/null
                        echo "Delete user$I finished."
                else
                        echo "user$I is not exist."
                fi
        done
else
        echo "Unknown arguments."
        exit 12
fi

    7、寫一腳本,通過參數傳遞,添加用戶並顯示信息,如已存在,則顯示用戶存在,參數形如:user1,user3,user9,user10等

#!/bin/bash
#
if [ $# -lt 1 ];then
        echo "Usage:administrator.sh ARG"
        exit 10
fi
for I in `echo $1 |sed 's/,/ /g'`;do
        if id $I &>/dev/null;then
                echo "$I is exist."
        else
                adduser $I &>/dev/null
                echo "Add $I finished."
        fi
done

    8、寫一腳本,通過選項與參數傳遞,增加用戶及刪除用戶;當選項爲"--add"時,參數爲user1,user3,abc3等時表示增加用戶,如--add user1,user3,abc,表示增加用戶user1,user3,abc;當選項爲"--del"時,參數爲user1,user3,abc3,時,表示刪除用戶,如--del user1,user3,abc3

#!/bin/bash
#
if [ $# -lt 1 ];then
        echo "Usage:administrator.sh Option ARG"
        exit 10
fi
#
#
if [ $1 == '--add' ];then
        for I in `echo $2 |sed 's/,/ /g'`;do
                if id $I &>/dev/null;then
                        echo "$I is exist."
                else
                        adduser $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 &>/dev/null
                        echo "$I is deleted."
                else
                        echo "No such $I."
                fi
        done
else
        echo "Unknown options and username."
        exit 14
fi

組合條件測試;

    -a:與關係

    -o:或關係

    !:非關係

    如:if [ $# -gt 1 -o $# -le 4 ]

        if [ $# -gt 1 ] || [ $# -le 4 ]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章