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 ]

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