while/do/done
while的用法和C语言类似。比如一个验证密码的脚本:
#! /bin/sh
echo "Enter password:"
read TRY
while [ "$TRY" != "secret" ]; do
echo "Sorry, try again"
read TRY
done
下面的例子通过算术运算控制循环的次数:
#! /bin/sh
COUNTER=1
while [ "$COUNTER" -lt 10 ]; do
echo "Here we go again"
COUNTER=$(($COUNTER+1))
done
break和continue
break[n]可以指定跳出几层循环;continue跳过本次循环,但不会跳出循环。
即break跳出,continue跳过。
练习:将上面验证密码的程序修改一下,如果用户输错五次密码就报错退出。
#! /bin/bash
count=4
echo "input a passwd"
read psd
while [ "$psd" != "tw123" ]; do
count=$[count-1]
printf "Enter again\n"
read psd
if [ "$psd" == "tw123" ]; then
printf "success.\n"
break;
elif [ $count -le 0 ];then
printf "break\n"
break
fi
done