shell脚本while循环
除了依据判断式达成与否的不定循环之外, 还有另外一种已经固定要跑多少次的循环形态,可称为固定循环!
while do done, until do done (不定循环)
不定循环最常见的就是这两种:
while [ condition ] #中括号内为判断式 do #do 是循环的开始! 程序段落 donedone是循环的结束,while的中文是当...时,当condition条件成立时,就进行循环,直到condition的条件不成立才停止。
另外一种不定循环的方式:
until [ condition ] do 程序段落 done与while相反,until是当condition条件成立时,就终止循环, 否则就持续进行循环的程序段。
假设让用户输入yes或者YES才结束程序的执行,否则就一直进行告知用户输入字符串。
[peter@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"和"YES"时,才进行循环内的程序。
如果${yn}是"yes"或"YES"时,就会离开循环, 如果用until,条件会变成这样:
[peter@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 done echo "OK! you input the correct answer."利用循环计算1+2+3+....+100:
[peter@study bin]$ vim cal_1_100.sh #!/bin/bash # Program: # Use loop to calculate "1+2+3+...+100" result. # History: # 2015/07/17 VBird First release PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH s=0 # 这是加总的数值变量 i=0 # 这是累计的数值,亦即是 1, 2, 3.... while [ "${i}" != "100" ] do i=$(($i+1)) # 每次 i 都会增加 1 s=$(($s+$i)) # 每次都会加总一次! done echo "The result of '1+2+3+...+100' is ==> $s"执行sh cal_1_100.sh就可以得到5050!
如果想要让用户自行输入一个数字,让程序由1+2+... 直到你输入的数字为止, 该如何撰写呢?
initroot编辑整理,转载请注明www.initroot.com
100次点赞
100次阅读