循环执行: 将一段代码重复执行0、1或多次;
进入条件:条件满足时才进入循环;
退出条件:每个循环都应该有退出条件,以有机会退出循环;
bash脚本:
for循环
while循环
until循环
for循环:
两种格式:
(1) 遍历列表
(2) 控制变量
(1)遍历列表:
for VARAIBLE in LIST; do
循环体
done
进入条件:只要列表有元素,即可进入循环;
退出条件:列表中的元素遍历完成;
LISTT的生成方式:
(1) 直接给出;
(2) 整数列表
(a) {start..end}
(b) seq [start [incremtal]] last
(3) 返回列表的命令
(4) glob
(5) 变量引用
$@, $*
示例:添加三个用户
#!/bin/bash # for username in user21 user22 user23; do if id $username &> /dev/null; then echo "$username exists." else useradd $username && echo "Add user $username finished." fi done
示例:求100以内所有正整数之和;
#!/bin/bash # declare -i sum=0 for i in {1..100}; do echo "\$sum is $sum, \$i is $i" sum=$[$sum+$i] done echo $sum
示例:判断/var/log目录下的每一个文件的内容类型
#!/bin/bash # for filename in /var/log/*; do if [ -f $filename ]; then echo "Common file." elif [ -d $filename ]; then echo "Directory." elif [ -L $filename ]; then echo "Symbolic link." elif [ -b $filename ]; then echo "block special file." elif [ -c $filename ]; then echo "character special file." elif [ -S $filename ]; then echo "Socket file." else echo "Unkown." fi done
for循环格式:
for VARAIBLE in LIST; do
循环体
done
for循环实现9*9乘法表
#!/bin/bash # for j in {1..9}; do for i in $(seq 1 $j); do echo -n -e "${i}X${j}=$[${i}*${j}]\t" done echo done
while循环:
while CONDITION; 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
until循环:
until CONDITION; do
循环体
循环控制变量修正表达式
done
进入条件:CONDITION测试为”假“
退出条件:CONDITION测试为”真“
示例:求100以内所有正整数之和;
#!/bin/bash # declare -i sum=0 declare -i i=1 until [ $i -gt 100 ]; do let sum+=$i let i++ done echo $sum
while循环的特殊用法(遍历文件的行):
while read VARIABLE; do
循环体;
done < /PATH/FROM/SOMEFILE
依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将基赋值给VARIABLE变量;
示例:找出ID号为偶数的用户,显示其用户名、ID及默认shell;
#!/bin/bash # while read line; do userid=$(echo $line | cut -d: -f3) username=$(echo $line | cut -d: -f1) usershell=$(echo $line | cut -d: -f7) if [ $[$userid%2] -eq 0 ]; then echo "$username, $userid, $usershell." fi done < /etc/passwd
for循环的特殊用法:
for ((控制变量初始化;条件判断表达式;控制变量的修正语句)); do
循环体
done
控制变量初始化:仅在循环代码开始运行时执行一次;
控制变量的修正语句:每轮循环结束会先进行控制变量修正运算,而后再做条件判断;
示例:求100以内所有正整数之和
#!/bin/bash # declare -i sum=0 for ((i=1;i<=100;i++)); do let sum+=$i done echo "Sum: $sum."
示例:打印九九乘法表
#!/bin/bash # for ((j=1;j<=9;j++)); do for ((i=1;i<=j;i++)); do echo -e -n "${i}X${j}=$[${i}*${j}]\t" done echo done
本文出自 “汪立明” 博客,请务必保留此出处http://afterdawn.blog.51cto.com/7503144/1916005
shell脚本编程循环之for/while/untill循环
原文地址:http://afterdawn.blog.51cto.com/7503144/1916005