while
的中文是『当
....
时』,所以,这种方式说的是『
condition
条件成立时,就½行循环,直到
condition
的条件不成立才停止
』的意思。还有另外一种不定循环的方式:
until [
condition
]
do
程序段落
done
这种方式恰恰与
while
相反,它说的是『
condition
条件成立时,就终止循环,
否则就持续½行
循环的程序段。
』是否刚好相反啊~我们以
while
来做个简单的练习好了。
假设我要让使用者输入
yes
或者是
YES
才½束程序的执行,否则就一直½行告知用户输入字符串。
[dmtsai@study bin]$
vim yes_to_stop.sh
#!/bin/bash
# Program:
#
Repeat question until user input correct answer.
# History:
# 2015/07/17
VBird
First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
while [ "${yn}" != "yes"
-
a "${yn}" != "YES" ]
do
read
-
p
"Please input yes/YES to stop this program: " yn
done
echo "OK! you input the correct answer."
上面这个例题的说明是『当
${yn}
这个变数不是
"yes"
${yn}
也不是
"YES"
时,才½行循环内
的程序。』
而如果
${yn}
"yes"
"YES"
时,就会离开循环啰~那如果使用
until
呢?呵呵有
趣啰~
他的条件会变成这样:
[dmtsai@study bin]$
vim
yes_to_stop
-
2.sh
#!/bin/bash
# Program:
#
Repeat question until user input correct answer.
# History:
# 2015/07/17
VBird
First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
until [ "${yn}" == "yes"
-
o "${yn}"
== "YES" ]
do
read
-
p "Please input yes/YES to stop this program: " yn