for循环
for语句的结构
读取不同的变量值
1)for 变量 in 取值列表
for i in $(seq 1 10)
do
命令序列
....
done
也可以用seq 来写取值列表
遍历文件内容
2)for ((变量=初始值; 变量范围; 变量的迭代方式))
for ((i=1; i<=10; i++))
do
命令序列
....
done
实例操作
创建用户
通过/etc/passwd文件查看 创建成功
批量修改用户密码
for遍历循环脚本实例
1)for 变量 in 取值列表
for i in $(seq 1 10)
do
命令序列
....
done
批量添加用户
检查主机状态
2)for ((变量=初始值; 变量范围; 变量的迭代方式))
for ((i=1; i<=10; i++))
do
命令序列
....
done
求字符串分片
${变量:下标:长度} #下标从0开始

求字符串长度
${#变量}
求随机数
$RANDOM #0~32767
求0到N-1之间的随机数 $[RANDOM % N]
自动生成8位数随机密码案例
for循环实现多线程
for ((i=1; i<=10; i++))
do
{
命令序列
....
}& #将每次循环的进程都放入后台自行运行
done
wait #等待上面所有循环的进程都执行完毕后再执行后面的命令
命令序列
IFS for循环取值列表分隔符
set | grep IFS --> IFS=$' \t\n' 默认包含 空格、制表符、换行符
系统变量不要随便修改
while循环
//while 循环
while [ 条件表达式 ] while test 条件表达式 while 命令行 &> /dev/null #条件成立时才会循环执行do里面的命令序列
do
命令序列
....
变量的迭代方式
done
a=1
while [ $a -le 10 ]
do
echo $a
let a++
done
while语句应用实例
a小于等于20前条件一直会成立 一直会循环
必须得加一个迭代a++
不然会一直重复循环1 <= 20
while配合sleep实现更小的脚本运行
echo 这边简单说一下
#从文件读取行内容循环
cat 文件 | while read 变量
do
命令序列
....
done
while read 变量
do
命令序列
....
done < 文件
until循环
//until 循环
until [ 条件表达式 ] until test 条件表达式 until 命令行 &> /dev/null #条件不成立时才会循环执行do里面的命令序列
do
命令序列
....
变量的迭代方式
done
a=1
until [ $a -ge 10 ]
do
echo $a
let a++
done
循环退出
exit 退出脚本进程 exit N 还可以指定脚本退出的状态返回码
break 跳出单个循环 break 2 跳出2层循环
continue 中止本次循环中的其它命令执行,但不会完全中止整个循环运行
for双重循环
for ((a=1; a<=6; a++))
do
echo $a
for ((b=1; b<=6; b++))
do
echo $b
if [ $b -eq 3 ];then
break
fi
done
done
for双重循环实例
99乘法表
正直角三角形
倒直角三角形
等腰直角三角形
菱形
删除变量值内容
A='11:22:33:44'
echo ${A%:*} --> 11:22:33 #从最右边开始删内容,直到最近的一个 : 的位置
echo ${A%%:*} --> 11 #从最右边开始删内容,直到最远的一个 : 的位置
echo ${A#*:} --> 22:33:44 #从最左边开始删内容,直到最近的一个 : 的位置
echo ${A##*:} --> 44 #从最左边开始删内容,直到最远的一个 : 的位置