概述
文章目录
- while 循环的语法结构 和 一些例子:
- 1、求 10 以内每个整数的平方值:
- 2、使用 while 循环 的嵌套来实现打印三角形:
- do..while 语法:
此链接通往 Bash Shell 编程学习的目录导航 ,从入门到放弃,感兴趣的可以去看看:
while 循环的语法结构 和 一些例子:
语法结构:
while (expresssion)
do
cmd
done
while 循环 : 当表达式成立的时候,执行 cmd 。
提到了 while 循环 就当然 想到了 do..while 循环 ,这两个可不一样!
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
当然,还可以使用 while true 或 while :
while true(或 :)
do
循环体
done
true 命令为真 :一样!
root@zhengzelin:~# true
root@zhengzelin:~# echo $?
0
root@zhengzelin:~# type true
true is a shell builtin
root@zhengzelin:~# :
root@zhengzelin:~# echo $?
0
root@zhengzelin:~# type :
: is a shell builtin
———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
while 循环 基本上语法就是这样,不过一般使用的话,你得声明变量:
比如让你输出 1 - 100 的数字!
你如果使用 for 类C风格的语法时:
for((i=1;i<=100;i++));do echo $i;done
当你使用 while 的时候:
a=1;while((a<=100));do echo $a; let a++;done
a=1;while [[ $a -le 100 ]];do echo $a; let a++;done
上面的三个表达式 对应 的相当于 for(()) 里面的三个表达式,这样就很通俗易懂了吧!
a=1 对应 i=1 (当然,a 和 i 是变量名 ,任何数都可以)
a<=100 对应 i<=100
let a++ 对应 i++
1、求 10 以内每个整数的平方值:
#!/bin/bash
sum=1
while [ $sum -le 10 ]
do
pf=$(expr $sum * $sum) # 可换成 let pf=sum*sum
echo $pf
sum=$( expr $sum + 1 ) # 可以换成 let sum++
done
# 这里的 pf=$(expr $sum * $sum) 可以替换为 :pf=$[$sum**2]
root@zhengzelin:~# ./d.sh
1
4
9
16
25
36
49
64
81
100
root@zhengzelin:~# bash -x d.sh
+ sum=1
+ '[' 1 -le 10 ']'
++ expr 1 '*' 1
+ pf=1
+ echo 1
1
++ expr 1 + 1
+ sum=2
+ '[' 2 -le 10 ']'
++ expr 2 '*' 2
+ pf=4
+ echo 4
4
++ expr 2 + 1
+ sum=3
+ '[' 3 -le 10 ']'
++ expr 3 '*' 3
+ pf=9
+ echo 9
9
++ expr 3 + 1
+ sum=4
+ '[' 4 -le 10 ']'
++ expr 4 '*' 4
+ pf=16
+ echo 16
16
++ expr 4 + 1
+ sum=5
+ '[' 5 -le 10 ']'
++ expr 5 '*' 5
+ pf=25
+ echo 25
25
++ expr 5 + 1
+ sum=6
+ '[' 6 -le 10 ']'
++ expr 6 '*' 6
+ pf=36
+ echo 36
36
++ expr 6 + 1
+ sum=7
+ '[' 7 -le 10 ']'
++ expr 7 '*' 7
+ pf=49
+ echo 49
49
++ expr 7 + 1
+ sum=8
+ '[' 8 -le 10 ']'
++ expr 8 '*' 8
+ pf=64
+ echo 64
64
++ expr 8 + 1
+ sum=9
+ '[' 9 -le 10 ']'
++ expr 9 '*' 9
+ pf=81
+ echo 81
81
++ expr 9 + 1
+ sum=10
+ '[' 10 -le 10 ']'
++ expr 10 '*' 10
+ pf=100
+ echo 100
100
++ expr 10 + 1
+ sum=11
+ '[' 11 -le 10 ']'
2、使用 while 循环 的嵌套来实现打印三角形:
root@zhengzelin:~# vim d.sh
#!/bin/bash
a=1
while [ $a -le 5 ]
do
b=1
while [ $b -le $a ]
do
echo -n "*"
let b++
done
echo
let a++
done
root@zhengzelin:~# ./d.sh
*
**
***
****
*****
root@zhengzelin:~# bash -x d.sh
+ a=1
+ '[' 1 -le 5 ']'
+ b=1
+ '[' 1 -le 1 ']'
+ echo -n '*'
*+ let b++
+ '[' 2 -le 1 ']'
+ echo
+ let a++
+ '[' 2 -le 5 ']'
+ b=1
+ '[' 1 -le 2 ']'
+ echo -n '*'
*+ let b++
+ '[' 2 -le 2 ']'
+ echo -n '*'
*+ let b++
+ '[' 3 -le 2 ']'
+ echo
+ let a++
+ '[' 3 -le 5 ']'
+ b=1
+ '[' 1 -le 3 ']'
+ echo -n '*'
*+ let b++
+ '[' 2 -le 3 ']'
+ echo -n '*'
*+ let b++
+ '[' 3 -le 3 ']'
+ echo -n '*'
*+ let b++
+ '[' 4 -le 3 ']'
+ echo
+ let a++
+ '[' 4 -le 5 ']'
+ b=1
+ '[' 1 -le 4 ']'
+ echo -n '*'
*+ let b++
+ '[' 2 -le 4 ']'
+ echo -n '*'
*+ let b++
+ '[' 3 -le 4 ']'
+ echo -n '*'
*+ let b++
+ '[' 4 -le 4 ']'
+ echo -n '*'
*+ let b++
+ '[' 5 -le 4 ']'
+ echo
+ let a++
+ '[' 5 -le 5 ']'
+ b=1
+ '[' 1 -le 5 ']'
+ echo -n '*'
*+ let b++
+ '[' 2 -le 5 ']'
+ echo -n '*'
*+ let b++
+ '[' 3 -le 5 ']'
+ echo -n '*'
*+ let b++
+ '[' 4 -le 5 ']'
+ echo -n '*'
*+ let b++
+ '[' 5 -le 5 ']'
+ echo -n '*'
*+ let b++
+ '[' 6 -le 5 ']'
+ echo
+ let a++
+ '[' 6 -le 5 ']'
do…while 语法:
do
{ 循环体... }
while (条件表达式); # 注意 分号 ";" !
再来看一下 while 循环的语法结构:
while (条件表达式)
do
循环体
done
双方对比:
1、do... while 是先执行一次 循环体 然后再查看 条件表达式是否成立;成立则返回循环体继续执行,不成立则退出!
2、 while 循环 是 先判断 条件表达式是否成立,成立则执行 循环体,不成立则退出!
也就是说 不管条件表达式是否为true;do...while 最少会执行一次 循环体,而 while 却可能一次都不会执行!
关于 while 嵌套 打印 等腰三角形 或 九九乘法表 在其他文章可以看见!
while 循环 嵌套打印 九九乘法表
最后
以上就是拼搏冬日为你收集整理的Bash Shell 中的while 循环、 do...while的全部内容,希望文章能够帮你解决Bash Shell 中的while 循环、 do...while所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复