-
while 语句
while循环的用法如下:while condition do statements done
condition表示判断条件,statements表示要执行的语句,do和done都是shell中的关键字
while语句和if语句中的条件判断用法是一样的,可以使用test或 [ ] 命令,也可以使用(())
下列使计算从1加到100的和:#! /bin/bash i=1 sum=0 while [ " $i " -le 100 ] do ((sum += i)) ((i++)) done echo "The sum is: $sum"
运行结果:
The sum is:5050
-
until语句
until循环和while循环恰好相反,当判断条件不成立时才进行循环,一旦判断条件成立,则终止循环
until循环的用法如下:until condition do statements done
下列求从1加到100的值:
#!/bin/bash i=1 sum=0 until ((i>100)) do ((sum += i)) ((i++)) done echo "The sum is: $sum"
-
for语句
for循环有两种使用形式,一种是算术表达式方式,另一种是值表方式
用法如下:for ((exp1;exp2;exp3)) do statements done
exp1、exp2、exp3是3个表达式,其中exp2是判断条件,for循环根据exp2的结果来决定是否继续下一次循环。
下列求从1加到100的和#! /bin/bash sum=0 for ((i=1;i<100;i++)) do ((sum+=i)) done echo "The sum is: $sum"
exp1、exp2、exp3都是可选项,都可以省略,但分号必须保留
值表方式的for循环的用法如下:
for variable in value_list do statements done
variable表示变量,value_list表示取值列表,in是shell中的关键字。每次循环都会从value_list中取一个值赋给变量variable,然后进入循环体,直到取完value_list中的所有值,循环结束。in value_list部分可以省略,省略后的效果相当于in $@ ( $ * ),变量依次取位置参数的值
例如:#! /bin/bash sum=0 for n in 1 2 3 4 5 6 do echo $n ((sum+=n)) done echo "The sum is " $sum
下面是缺省value_list的情况
[root@ localhost ~]#cat ex #! /bin/bash for str do echo $str done [root@ localhost ~]# ./ex C++ Java Python C#
运行结果:
C++ Java Python C#
-
select in 语句
是shell独有的一种循环,适合终端这样的交互场景,该循环用来增强交互性,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功能
用法如下:select variable in value_list do statements done
栗子🥔:
#! /bin/bash echo "What is your favourite OS?" select name in "Linux" "Window" "Mac OS" "UNIX" "Android" do echo "You have selected $name" done
运行结果:
What is your favourite OS? 1)Linux 2)Windows 3)Mac OS 4)UNIX 5)Android #? 4↙ You have selected UNIX #? 1↙ You have selected Linux #? 9↙ You have selected #? 2↙ You have selected Windows #? ^D
#?用来提示用户输入菜单编号;^D表示按下Ctrl+D组合键,它的作用是结束select in循环。
select语句取值列表value_list中的内容会以菜单的形式显示出来,用户输入菜单编号,则表示选中某个值,这个值就会赋给变量variable,然后再执行循环体中的statements部分。每次循环时select都会要求用户输入菜单编号,并使用环境变量PS3的值作为提示符,PS3的默认值为#?,修改PS3的值就可以修改提示符。若用户输入的菜单编号不在范围之内,例如上面输入的9,就会给variable赋一个空值;如果用户输入一个空值(什么也不输入,直接回车),则会重新显示一遍菜单。
select是无限循环,只有遇到break语句,或按下Ctrl+D组合键才能结束
select in可以和case in一起使用:
#! /bin/bash
echo "What is your favourite OS?"
select name in "Linux" "Mac OS" "UNIX" "Android"
do
case $name in
"Linux")
echo "Linux是一个类UNIX操作系统,它开源免费。"
break;;
"Windows")
echo "Windows是微软开发的个人计算机操作系统。它是闭源收费的。"
break;;
"Mac OS")
echo "Mac OS是苹果公司基于UNIX开发的一款图形界面操作系统。"
break;;
"UNIX")
echo "UNIX是操作系统的开山鼻祖。"
break;;
"Android")
echo "Android是由Google开发的手机操作系统。"
break;;
*)
echo "输入错误,请重新输入"
esac
done
注:上文均出自计算机三级《Linux应用与开发技术》,本人在学习想要记录一下😊