Shell循环语句
前言
不管是哪一门计算机语言,循环都是不可绕开的一个话题,Shell 当然也不是例外。下面总结一些 Shell 脚本里常用的循环相关的知识点,新手朋友可以参考。
循环语句,主要是为了简化重复动作代码,在运维方面主要用于重复某项动作,例如批量创建用户,在shell中主要有两种 while循环 与 for 循环。
偷懒必备小语言
一:shell循环语句(for while until)
1.1:for 循环
for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区域(在do和done 之间),直到所有元素取尽为止。
其中,串行是一些字符串的组合,彼此用$IFS所定义的分隔符(如空格符)隔开,这些字符串称为字段。
for循环语句的语法结构:
for 变量名 in 取值列表
do
命令序列
done
行1,讲串行中的字段迭代放入变量中
行2-4,接着将重复执行do和done之间的命令区域,直到串行中每一个字段军处理过为止。
for循环语句结构图:
语法:
for in {
1...10} {
1...10...20}
$(seq 1 10) (seq 1 2 10)
for ((i=1;i<=10;i++)) ((i=1;i<10;i+=2))
案例一:
#首先在文件里写好创建账号的名称
[root@localhost opt]# cat shuai.txt
Hero2
Hero3
Hero4
Hero5
[root@localhost opt]# vim 1.sh
#!/bin/bash
Hero=$(cat /opt/shuai.txt)
#创建全部账户
for null in $Hero
do
#添加账户
useradd $null
#设置密码
echo "123123" | passwd --stdin $null
echo "创建${null}完成"
done
[root@localhost opt]# bash 1.sh
更改用户 Hero2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
创建Hero2完成
更改用户 Hero3 的密码 。
passwd:所有的身份验证令牌已经成功更新。
创建Hero3完成
更改用户 Hero4 的密码 。
passwd:所有的身份验证令牌已经成功更新。
创建Hero4完成
更改用户 Hero5 的密码 。
passwd:所有的身份验证令牌已经成功更新。
创建Hero5完成
语法two:
for ((初始值;循环控制条件;变量变化))
do
程序
done
需要注意以下几点:
初始值:在循环开始时,需要给某个变量赋予初始值,如 i=1。
循环控制条件:用于指定变量循环的次数,如 i<=100,则只要 i 的值小于等于 100,循环就会继续。
变量变化:每次循环之后,变量该如何变化,如 i=i+1,代表每次循环之后,变量的值都加 1。
语法二和其他语言中的 for 循环类似,也就是事先决定循环次数的固定循环。先举一个简单的例子。
1.21:示例:1加到100求和
[root@localhost opt]# vim jia.sh
#!/bin/bash
#从1加到100
s