标签: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 变量类型 变量名
#!/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、写一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;" done3、对第二题进行扩展,如只显示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 ]
本文出自 “无知有知” 博客,请务必保留此出处http://yujiqing.blog.51cto.com/1475974/1617845
标签:for循环
原文地址:http://yujiqing.blog.51cto.com/1475974/1617845