一、分支语句
==结束语句等于开始语句得单词反着写==
1.1 if语句
bash
if 表达式;then
逻辑处理
elif 表达式;then
逻辑处理
else
逻辑处理
fi
如果想把then换到另一行切记:需要把分号去掉,如果将把if和then同行写,一定要加分号
1.1.1 单支语句
$1代表获取当前第一个参数
1.1.2 双分支语句
1.1.3 多分支语句
1.2 case条件结构语句
1.2.1 case语法结构
与java中的swicth一样的效果
bash
case 表达式 in
值)
;;
esac
我们在脚本中传入一个参数,如果是1就是第一季度......
1.2.2 case与if的对比
case他的范围没有if大,case只能来代表一个具体的值,而if支持大于小于,我们的case只能当与哪个值相等的时候,才会成功
二、循环语句
2.1 for循环
2.1.1 列表for循环(常用)
bash
#!/bin/bash
for i in 取值列表 do
循环主体/命令
done
我们可以将取值列表来当作一个数组,而我们的$@是我们传入来的所有参数,进行遍历
2.1.2 类似C语言的风格
bash
for((exp1;exp2;exp3))
do
指令...
done
编写类似C语言风格脚本
打印一下从1到10
2.2 while语法
while:当...时候,满足条件执行
基本结构:
bash
while 条件
do
命令
done
循环如果num大于10就跳出循环
2.3 until循环
until:直到...时候,不满足条件执行
基本结构
bash
until condition
do something...
done
2.4 跳出循环
shell中也支持break跳出循环, continue跳出本次循环.用法与C, Java中相同
我们先做break,如果遍历到6就跳出循环
使用 continue,如果是偶数就执行,不是偶数执行下次循环
三、函数
Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。
Shell 中的函数和C++、Java、Python、C# 等其它编程语言中的函数类似,只是在语法细节有所差别。
3.1 基本语法
bash
function name() {
statements
[return value]
}
对各个部分的说明:
-
function
是 Shell 中的关键字,专门用来定义函数; -
name
是函数名; -
statements
是函数要执行的代码,也就是一组语句; -
return value
表示函数的返回值,其中 return 是 Shell 关键字,专门用在函数中返回一个值;这一部分可以写也可以不写。
由包围的部分称为函数体,调用一个函数,实际上就是执行函数体中的代码。
3.2 函数定义的简化写法
如果你嫌麻烦,函数定义时也可以不写 function 关键字:
bash
name() {
statements
[return value]
}
如果写了 function 关键字,也可以省略函数名后面的小括号:
bash
function name {
statements
[return value]
}
建议使用标准的写法,这样能够做到"见名知意",一看就懂。
3.3 函数调用
调用 Shell 函数时可以给它传递参数,也可以不传递。如果不传递参数,直接给出函数名字即可:
bash
name
如果传递参数,那么多个参数之间以空格分隔:
bash
name param1 param2 param3
不管是哪种形式,函数名字后面都不需要带括号
示例一:
定义一个函数:
示例二:
使用 $@ 来遍历函数参数,定义一个函数,计算所有参数的和:
四、状态码
Shell 中运行的命令会使用0-255之间的整数值,作为退出状态码,并以此来告知shell该命令执行的状态。通常情况下,约定0代表命令成功结束,非0代表程序非正常退出
典型退出状态码及其含义 | |
---|---|
退出状态码 | 含义 |
0 | 命令运行成功 |
1 | 通知未知错误 |
2 | 误用shell命令 |
126 | 命令不可执行 |
127 | 没有找到命令 |
128 | 无效退出参数 |
128+x | linux信号x的严重错误 |
130 | 命令通过Ctrl+C终止 |
255 | 退出状态码越界 |
- $?:返回上一条语句或脚本执行的状态
-
0:成功
-
1-255:不成功
- exit 命令,用于退出脚本或当前Shell
exit 命令n 是一个从 0 到 255 的整数 ,0 表示成功退出,非零表示遇到某种失败 ,返回值被保存在状态变量 $? 中
bash
exit n
4.1 示例
示例一:
未指定函数返回值,且函数最后一条命令执行成功
制造错误命令实现
说明:由于此时未指定返回值,所以以函数最后一条被执行的命令echo "Hello World";的执行状态作为函数的退出状态。此时 echo "Hello World";执行成功,所以返回0作为退出状态码。
示例二
我们的返回值代替了上一行的状态码
测试超过255以外的状态码
说明:hello函数指定了函数返回值为333,由于260超出了0~255,所以需要对指定的返回值进行一次取模运算,所以退出状态码由333变更为77。
示例三
指定函数返回值,但返回值前发生命令报错
函数中一条命令执行报错并不会影响后续代码的执行
示例四
使用exit退出程序
五、作业
打印九九乘法表,打印四种
3.
答案: