while循环语法格式:
while CONDITION; do
循环体
循环控制变量修正表达式
done
进入条件:CONDITION测试为’真’;
退出条件:CONDITION测试为’假’;
until循环语法格式:
until CONDITION; do
循环体
循环控制变量修正表达式
done
进入条件:CONDITION测试为’假’;
退出条件:CONDITION测试为’真’;
********************************************************
举例1:计算100以内正整数之和;
#!/bin/bash
#
# for looping statements:
echo
echo "for looping statements:"
echo
declare -i sum1=0
for i in {1..100};do
let sum1+=$i
done
echo "$sum1"
# while looping statements:
echo
echo "while looping statements:"
echo
declare -i sum2=0
declare -i i=1
while [ $i -le 100 ];do
let sum2+=$i
let i++
done
echo "$sum2"
# until looping statements:
echo
echo "until looping statements:"
echo
declare -i sum3=0
declare -i i=1
until [ $i -gt 100 ];do
let sum3+=$i
let i++
done
echo "$sum3"
echo
举例2:分别求100以内所有偶数之和,所有奇数之和(for/while/until)
#!/bin/bash
#
# for 循环语句写法;
echo
echo "分别求100以内所有偶数之和,所有奇数之和;:"
echo "for 循环语句写法计算结果:"
declare -i even_sum=0
declare -i odd_sum=0
for i in {1..100}; do
mdo=$[$i%2]
if [ $mdo -eq 0 ]; then
even_sum+=$i
else
odd_sum+=$i
fi
done
echo -e "even_sum=$even_sum.\todd_sum=$odd_sum."
echo
# while 循环语句写法;
echo "while 循环语句写法计算结果:"
declare -i even_sum=0
declare -i odd_sum=0
declare -i i=1
while [ $i -le 100 ]; do
mdo=$[$i%2]
if [ $mdo -eq 0 ]; then
even_sum+=$i
else
odd_sum+=$i
fi
let i++
done
echo -e "even_sum=$even_sum.\todd_sum=$odd_sum."
echo
# until 循环语句写法;
echo "until 循环语句写法计算结果:"
declare -i even_sum=0
declare -i odd_sum=0
declare -i i=1
until [ $i -gt 100 ]; do
mdo=$[$i%2]
if [ $mdo -eq 0 ]; then
even_sum+=$i
else
odd_sum+=$i
fi
let i++
done
echo -e "even_sum=$even_sum.\todd_sum=$odd_sum."
echo
举例3:创建10个用户,user101-user110;密码同用户名(for循环);
#!/bin/bash
#
for i in {206..210}; do
id user$i > /dev/null 2>&1
if [ $? -eq 0 ]; then
user$i is already exists.
else
useradd user$i && echo "user${i}" | passwd --stdin user$i &> /dev/null
echo "Add user${i} is finished.password is the same with username."
fi
done
#!/bin/bash
#
declare -i i=101
while [ $i -le 110 ]; do
id user$i > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "user$i is already exists."
else
useradd user$i && echo "user$i" | passwd --stdin user$i > /dev/null
echo "Add user$i is finished. password is the same with username."
fi
let i++
done
#!/bin/bash
#
declare -i i=101
until [ $i -gt 110 ]; do
id user$i > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "user$i is already exists."
else
useradd user$i && echo "user$i" | passwd --stdin user$i > /dev/null
echo "Add user$i is finished. password is the same with username."
fi
let i++
done
举例4:打印九九乘法表(for循环);
外循环控制乘数,内循环控制被乘数;
#!/bin/bash
for j in {1..100};do
for i in $(seq 1 $j);do
echo -e "${i}x${j}=$[${i}*${j}]\t"
done
echo
done
打印九九乘法表(while循环);
#!/bin/bash
#
declare -i j=1
while [ $j -le 9 ]; do
declare -i i=1
while [ $i -le $j ]; do
echo -n -e "${i}x${j}=$[$i*$j]\t"
let i++
done
let j++
echo
done
打印九九乘法表(until循环);
#!/bin/bash
#
declare -i j=1
until [ $j -gt 9 ]; do
declare -i i=1
until [ $i -gt $j ]; do
echo -n -e "${i}x${j}=$[$i*$j]\t"
let i++
done
let j++
echo
done
举例5:逆序打印九九乘法表(for循环);
#!/bin/bash
#
for j in {9..1}; do
for i in $(seq 1 $j); do
echo -n -e "${i}x${j}=$[$i*$j]\t"
done
echo
done
逆序打印九九乘法表(while循环);
#!/bin/bash
#
declare -i j=9
while [ $j -le 9 ]; do
if [ $j -lt 1 ]; then
exit 11
fi
declare -i i=1
while [ $i -le $j ]; do
echo -n -e "${i}x${j}=$[$i*$j]\t"
let i++
done
let j--
echo
done
逆序打印九九乘法表(until循环);
#!/bin/bash
#
declare -i j=9
until [ $j -gt 9 ]; do
if [ $j -lt 1 ]; then
exit 11
fi
declare -i i=1
until [ $i -gt $j ]; do
echo -n -e "${i}x${j}=$[$i*$j]\t"
let i++
done
let j--
echo
done