【学习笔记】Shell编程---流程控制语句
最近学了好多个流程控制语句,都有点混乱了,赶紧先把各种用法记录下来!
if 语句
语法格式:
if 条件测试命令串
then
条件为真时执行的命令
else
条件为假时执行的命令
fi
以关键字if开头,后跟条件测试表达式,条件表达式可以只包含单一的条件测试,也可以是多个条件测试组成的复合表达式,关键字then可以和 if 处于同一行,也可以换行书写。处于同一行时,必须在条件表达式后添加分号“;” 当条件表达式成立时,可以执行一条或多条命令,以关键字 fi 结束。
例:当输入Y或者y时,输出“Very good!!!”;当输入N或n时,输出“Oh,I'm sorry to hear that!!!”
程序实现如下:
执行文件,结果是正确的
除了简单的if-else-fi结构,还有if-elif-else-fi结构
语法格式:
if 条件表达式1 ; then
条件表达式1成立时执行的命令
elif 条件表达式 2; then
条件表达式2成立时执行的命令
…
else
以上所有条件都不成立时执行的命令
fi
例:当输入Y或者y时,输出“Very good!!!”;当输入N或n时,输出“Oh,I'm sorry to hear that!!!”;当输入其他非Y/y/N/n的输入时,输出“Wrong answer!!!”
case条件语句
语法格式:
case 值 in
表达式1)命令1;;
表达式2)命令2;;
...
*)命令X
esac
case多选择语句,可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。
例:输入一个num值,当输入的num是1时,输出A+B的值......
select循环
Shell中的select语句可以将选项列表做出类似目录的形式,以交互的形式选择列表中的数据,传入select语句中的主体部分加以执行,select语句实质上也是一个循环语句,若不添加break关键字,程序将无法跳出select结构。
语法格式:
select 变量 in 列表
do
…
break
done
例:
如果不加【break】来跳出select循环的话将会出现以下情况
for循环
- 主要用于执行次数确定的某种操作
- 如果事先知道循环要执行多少次,使用for循环最合适
- 把循环变量var设为value_list 中的一个值,然后代入循环体执行,直到value_list 中的每个值都使用一遍
通常有两种形式
第一种:
for var in var_list
do
循环体
done
第二种:
for (( 初始化操作 ; 循环表达式 ; 赋值操作 ))
do
循环体
done
这种形式循环变量的取值一般是一个整数 ,通过控制取值的上限或下限确定循环体的执行次数
例:
#!/bin/bash
还有一个非常典型的for循环的练习,题目,打印出99乘法表,打印的排版格式如下:
可以这样写:
#!/bin/bash
for i in {1..9}
dofor ((j=1;j<=i;j++))doprintf "%d*%d=%d" $j $i $((i*j))doneecho
done
打印结果如下
while循环
while循环主要用于执行次数不确定的某种操作
while循环的工作机制是:反复执行某种有规律的操作,直到条件不成立
语法格式:
while [ 循环表达式 ]
do
循环体
done
例:编写一个名为putnum的程序,在屏幕上输出从10到1的数字。
使用while循环计算1-100的累加值
until循环
和while循环的含义正好相反
执行顺序:当循环表达式为真时结束循环,否则一直执行循环体
语法格式:
until [ 循环表达式 ]
do
循环体
done
例:编写一个程序,依次输出10、9、8、7、6。