循环: 将循环体代码执行0、1或多次
进入条件:进入循环的条件
退出条件:循环终止的条件
for循环:
for VARIABLE in LIST; do
循环体
done
示例1:写一个脚本,创建20个用户,并以用户名作为密码赋予用户
#!/bin/bash # for user in user{1..10}; do if id $user; then echo "user is exists." else useradd $user echo "Add user $user finished." fi done
示例2:写一个脚本,查看某目录下所有文件的类型
cat for1.sh #!/bin/bash # for filename in /var/*; do file $filename done
示例3:写一个脚本,查看用户的主组
#!/bin/bash # for user in $(cut -d: -f1 /etc/passwd); do echo "$user primary group: $(id -n -g $user)." done
while循环:
while CONDTION; do
循环体
done
进入条件:当CONDITION为“真”
退出条件:当CONDITION为“假”
示例:写一个脚本,求100以内所有正整数之和
#!/bin/bash # declare -i sum=0 declare -i i=1 while [ $i -le 100 ]; do let sum+=$i let i++ done echo "Sum: $sum"
示例:写一个脚本,打印99乘法表
#!/bin/bash # declare -i i=1 declare -i j=1 while [ $j -le 9 ]; do while [ $i -le $j ]; do echo -e -n "${i}X${j}=$[$i*$j]\t" let i++ done echo let i=1 let j++ done
unitl循环:
until CONDITION; do
循环体
循环控制变量的修正表达式
done
进入条件:当CONDITION为“假”时
退出条件:当CONDITION为“真”时
示例:写一个脚本,如果文件不存在,则创建文件
#!/bin/bash # file=/root/testfile until [ -f $file ]; do touch $file echo "file $file is touch finished" done
循环控制:
continue [n]:提前结束本轮循环,而直接进入下一轮;
break [n]:提前结束循环;
示例:写一个脚本,求100以内所有偶数之和
#!/bin/bash # declare -i sum=0 declare -i i=0 while [ $i -le 100 ]; do let i++ if [ $[$i%2] -eq 1 ]; then echo "$1 is a odd" continue fi let sum+=$i done echo "Sum: $sum"
示例:每隔一段时间,查看用户是否登录
#!/bin/bash # username=$1 declare -i count=0 while true; do if who | grep "^$username" &> /dev/null; then echo "$username is logged." break else let count++ echo "$count : $username is not login" fi sleep 3 done
while循环的特殊用法:
遍历文件的每一行:
while read VARIABLE; do
循环体
done < /PATH/FROM/SOME_FILE
示例:找出UID为偶数的所有用户,显示其用户名和ID号;
#!/bin/bash # while read line; do userid=$(echo $line | cut -d: -f3) if [ $[$userid%2] -eq 0 ]; then echo $line | cut -d: -f1,3 fi done < /etc/passwd
for循环的特殊用法:
for ((expr1;expr2;expr3)); do
循环体
done
expr1: 定义控制变量,并初始赋值;
expr2: 循环控制条件;
进入条件:控制条件为“真”
退出条件:控制条件为“假”
expr3: 修正控制变量
示例:求100以内所有正整数之和;
#!/bin/bash # declare -i sum=0 for ((i=1;i<=100;i++)); do let sum+=$i done echo "Sum: $sum."
原文地址:http://zhangnan30.blog.51cto.com/2051991/1696286