1.for循环1.语法语法1forvariableinvalue1value2value3...valuendoprogramdone语法2for((初始值;循环控制条件;变量变化))doprogramdone2。应用批量解压脚本for_tar.sh#!/bin/bashcd/tmp/tmpforiin$(ls*.tar.gz)dotar-zxf$i&>/dev/nulldone给for_tar.sh脚本添加执行权限[root/tmp]#chmod+xfor_tar.shbeforerunningthescript[root/tmp]#lltmp/totalusage20K-rw-r--r--1rootroot167Jun511:13file1.tar.gz-rw-r--r--1rootroot119Jun511:12file2.tar.gz-rw-r--r--1rootroot120Jun511:12file3.tar.gz-rw-r--r--1rootroot119Jun511:12file4.tar.gz-rw-r--r--1rootroot120June511:12file5.tar.gz运行脚本后[root/tmp]#./for_tar.sh[root/tmp]#lltmp/totalusage40K-rw-r--r--1rootroot43Jun511:13file1-rw-r--r--1rootroot167Jun511:13file1.tar.gz-rw-r--r--1rootroot5Jun511:11file2-rw-r--r--1rootroot119June511:12file2.tar.gz-rw-r--r--1rootroot5June511:12file3-rw-r--r--1rootroot120June511:12file3.tar.gz-rw-r--r--1rootroot5June511:12file4-rw-r--r--1rootroot119June511:12file4.tar。gz-rw-r--r--1rootroot5June511:12file5-rw-r--r--1rootroot120June511:12file5.tar.gz批量创建用户for_useradd。sh#!/bin/bash#批量添加指定数量的用户实例read-t30-p"输入用户名:"nameread-t30-p"输入密码:"passread-t30-p"输入用户号:"num#检查输入内容是否非空if[-z"$name"-o-z"$pass"-o-z"$num"]thenecho"错误,必须输入姓名,密码,number"exit1fi#检查输入的用户数是否为纯数字chknum=$(echo"$num"|sed's/[0-9]//g')if[-n"$chknum"]thenecho"错误,数字必须是数字"exit2fifor((i=1;i<="$num";i=i+1))do#adduser/usr/sbin/useradd$name$i#adduserpassword,passwd--stdin参数为非交互式输入,密码直接传入,无需二次确认echo$pass|/usr/bin/passwd--stdin$name$iecho"add$i"done将执行权限添加到for_useradd.sh脚本[root/tmp]#chmod+xfor_useradd.shrunscript[root/tmp]#。/for_useradd.shinputusername:nameinputpassword:nameinputusernumber:10Changingpasswordforusername1passwd:所有授权令牌已成功更新。add1更改用户名2的密码。passwd:所有身份验证令牌已成功更新。add2更改用户名3的密码。passwd:所有身份验证令牌已成功更新。add3更改用户名4的密码。passwd:所有身份验证令牌已成功更新。add4更改用户名5的密码。passwd:所有身份验证令牌已成功更新。add5更改用户名6的密码。passwd:所有身份验证令牌已成功更新。add6更改用户名7的密码。passwd:所有身份验证令牌已成功更新。add7更改用户名8的密码。passwd:所有身份验证令牌已成功更新。add8更改用户name9的密码。passwd:所有身份验证令牌已成功更新。add9更改用户名10的密码。passwd:所有身份验证令牌已成功更新。add10查看新增用户[root/tmp]#cat/etc/passwd|grep^namename1:x:1002:1002::/home/name1:/bin/bashname2:x:1003:1003::/home/name2:/bin/bashname3:x:1004:1004::/home/name3:/bin/bashname4:x:1005:1005::/home/name4:/bin/bashname5:x:1006:1006::/home/name5:/bin/bashname6:x:1007:1007::/home/name6:/bin/bashname7:x:1008:1008::/home/name7:/bin/bashname8:x:1009:1009::/home/name8:/bin/bashname9:x:1010:1010::/home/name9:/bin/bashname10:x:1011:1011::/home/name10:/bin/bash批量删除所有普通用户for_userdel.sh#!/bin/bashuser=$(cat/etc/passwd|grep/bin/bash|grep-vroot|cut-d":"-f1)foriin$userdouserdel-r$idonefor_userdel.sh脚本添加执行权限[root/tmp]#chmod+xfor_userdel.sh运行脚本/for_userdel.sh查看用户[root/tmp]#cat/etc/passwd|grep/bin/bashroot:x:0:0:root:/root:/bin/bash从1添加到100for_sum.sh#!/bin/bashs=0for((i=1;i<=100;i=i+1))dos=$(($s+$i))doneecho"sumis:$s"添加for_sum.sh脚本的执行权限[root/tmp]#chmod+xfor_sum.shrunscript[root/tmp]#./for_sum.shsum为:50502.while循环while循环是一个无限循环,也称为条件循环。只要条件判断为真,循环就会继续,直到条件判断不为真,循环就会停止。这和for的固定循环不一样。写while循环的时候要特别注意不要写死循环。1.语法while[条件判断表达式]doprogramdone2.从1应??用到100while_sum.sh#!/bin/bashi=1s=0while[$i-le100]dos=$(($s+$i))i=$(($i+1))doneecho"sumis:$s"添加while_sum.sh脚本的执行权限[root/tmp]#chmod+xwhile_sum.shrunscript[root/tmp]#./while_sum.shsumis:50503.untilloopuntil循环与while循环相反。在until循环中,只要条件判断表达式不为真,就会执行循环,执行循环程序。一旦循环条件为真,循环终止。在写until循环的时候要特别注意不要写死循环。1.文法until[条件判断表达式]doprogramdone2。应用程序从1添加到100until_sum.sh#!/bin/bashi=1s=0until[$i-gt100]dos=$(($s+$i))i=$(($i+1))doneecho"sumis:$s"添加until_sum.sh脚本的执行权限[root/tmp]#chmod+xuntil_sum.shrunscript[root/tmp]#./until_sum.shsumis:5050
