t a number: " INPTNUM
if [ $INPTNUM -gt $NUMBER ] ; then
echo "Too big"
elif [ $INPTNUM -lt $NUMBER ] ; then
echo "Too small"
else
echo "Yes! you WIN. That's $NUMBER."
#在输入数字和随机数字匹配的时候,就退出
break
fi
done
#!/bin/bash
#
NUMBER=$[RANDOM%100+1]
until false ; do
read -p "Input a number: " INPTNUM
if [ $INPTNUM -gt $NUMBER ] ; then
echo "Too big"
elif [ $INPTNUM -lt $NUMBER ] ; then
echo "Too small"
else
echo "Yes! you WIN. That's $NUMBER."
break
fi
done
注意:在此类循环结构中,需要适当的添加continue或break控制语句,以使得无限循环可控;
2.实现遍历功能的while和until循环结构:
while read LINES ; do
COMMANDS
done < /PATH/FROM/SOMEFILE
until ! read LINES ; do
COMMANDS
done < /PATH/FROM/SOMEFILE
注意:在做遍历循环时,建议使用for;
select循环结构
select: select NAME [in WORDS ... ;] do COMMANDS; done
Select words from a list and execute commands.
select循环也是一种遍历列表的方式创建一个可视化菜单,每个列表项都有一个数字编号与之对应,供用户选择使用;而用户只需要选择其编号即可;
select是一种默认无限循环结构,因此,必须在循环体中为select提供退出循环的条件,通常可以使用break或exit命令实现;
通常情况下,select循环会和case一起使用,已进行合理的取值判断;
在脚本中实现的格式:
select VAR_NAME in LIST ; do
COMMANDS
done
写一个脚本,显示以/bin/bash为默认shell的用户的ID信息;
#!/bin/bash
#
#挑选用户名或者quit退出按钮
select I in $(awk -F : '/\/bin\/bash$/{print $1}' /etc/passwd) quit ; do
case $I in
quit)
exit
;;
*)
echo "The UID of $I is $(id -u $I)"
;;
esac
done