常用循环
1:for
2:while
3:until
for 循环格式:
for 变量 in 列表; do
循环体
done
for (( 表达式1 ; 表达式2 ; 表达式3 ));do
循环
done
for (( I=1; I<=100; I++));do
##表达式1 变量初始值
##表达式2 变化判断情况
##表达式3 变化情况
done
while 循环格式
注:条件满足进入循环, 条件不满足 退出循环
while 变量 ;do
执行
done
until循环格式
注:条件不满足进入循环, 条件满足 退出循环
until 变量;do
执行
done
从格式上看,while 和until 完全一致,但是 进入循环条件完全相反。
下面来几个简单的小脚本工具:
系统中每个用户进行问好
#!/bin/bash
#
N=`wc -l /etc/passwd |cut -d ‘ ‘ -f1` 用wc -l 查看有多少行,截取结果的第一段(数字)
for M in `seq 1 $N`;do 变量M, 从1到 $N进行循环
echo "Hello,`head -n $M /etc/passwd | tail -1 | cut -d: -f1` "
done 分别显示 该文件中的几行|取最后一行|截取第一列的用户名
显示所有用户的shell,并向 shell 为 /bash 的用户问好
#!/bin/bash
#
N=`wc -l /etc/passwd | cut -d ‘ ‘ -f1`
for M in `seq 1 $N`;do
Q=`head -n $M /etc/passwd | tail -1 | cut -d: -f7`
# echo "$Q"
if [ $Q = /bin/bash ];then
echo "Hello,$Q"
else
echo "$Q"
fi
done
计算 100以内 能被3整除的数的和
%取余
3%2=1
M=0
for I in `seq 100`;do
N=$[ $I%3 ]
# echo $N
if [ "$N" -eq 0 ];then
M=$[ $M + $I ]
fi
done
echo $M
随机生成10个数,挑选出最大的和最小的
declare -i M=0
declare -i F=10000000000
for I in `seq 10`;do
N=$RANDOM
if [ $N -gt $M ];then
M=$N
elif [ $N -lt $F ];then
F=$N
fi
done
echo "zui da de shi$M"
echo "zui xiao de shi $F"
写个循环
user1创建到user10 ,用户存在不创建,密码同用户,
接受一个参数
add: 创建用户
del:删除用户
其他:报错
if [ $1 == ‘add‘ ];then
for I in `seq 10`;do
if ! id "user$I" &>/dev/null;then
useradd "user$I" && echo "user$I" | passwd --stdin "user$I" &>/dev/null
echo "user$I chuangjian chenggong"
else
echo "user$I yi cunzai wu fa chuangjian"
fi
done
elif [ $1 == ‘del‘ ];then
for U in `seq 10`;do
if id "user$U"&>/dev/null;then
userdel -r "user$U" &&echo "user$U shanchu chenggong" &>/dev/null
echo "user$U shanchu chenggong"
else
echo "user$U bu cunzai"
fi
done
else
echo "cuowu"
exit 10
fi