if 语句
if 条件测试命令
then
命令序列1
else
命令序列2
fi
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
.............
*)
默认执行的命令序列
esac
case行尾必须时in 每一模式都要以)结束
除了最后一行*的不用双分号,其他的命令序列结束都要以双分号结束
最后的*)表示默认序列,当使用前面的各种模式都无法匹配该变量时,将执行*)的命令序列
for 变量名 in 取值列表
do
命令序列
done
for 语句就是从取值列表里取值,然后给变量名去执行命令序列,等到取值列表的值取完了,才结束循环,取值列表里的数以空格间隔,,,但是用空格间隔的连续序列,太过于麻烦,,,所以可以使用{1..5}来表示连续的序列(俩个点)
但是如果是不连续的数字,要用到seq命令
seq 尾数
seq 首数 尾数
seq 首数 增量 尾数
-w 等宽
for循环的序列不一定是数字,可以是文件或其他的
while 循环语句(实现循环次数不确定的循环)
while 条件测试命令
do
命令序列
done
先判断条件成立不成立,成立就执行命令序列,每执行一次就判定一次条件,条件如果不成立,就推出
还可以通过 while 实现对文件按行进行遍历(跟cat命令差不多)
while read line
do
命令序列-----------可以就直接是$line,把line看成是一个变量
done < 指定文件
while true;do-----------永远都是正确的,死循环
break-----结束循环,不结束程序
continue-----------结束本轮循环,开始下一轮循环
exit-------如果程序执行到exit语句的位置,那么将立即结束并推出程序,exit语句之后的代码都不会被
执行 在exit 后加一个数 例如 exit 34 那么执行 echo $? 的值就是34,,自定义返回的值是多少,,可以用于在有多个exit 的程序中,,好让用户知道exit是在程序的那个位置退出的
执行 shift 语句后 位置变量($1 --$9) 中的命令会依次向左传递
执行一次shift语句操作后会丢弃最左边的一个值
1=1 2=2 3=3 4=4
1=2 2=3 3=4 4的位置就丢弃不了,,1里边的数据与丢失了
shell默认的执行方式是串发执行-------就是当一条命令执行完以后,才会去执行另一条命令
并发执行就是------就是命令一起执行
如果想实现并发执行 就在脚本串发执行的部分加上 & 符号 原本的&符号是用来实现转到后天去执行的进程,但是这里的&符号可以实现并发执行
但是并发执行的坏处就是,执行的命令不规律, 只要把循环执行完了就行,
如果先执行完了循环的命令在去执行其他的命令,就要在循环的最后加上 wait(等待) 但是循环里的顺序还是不对的
当耗时比较长,,程序是要循环执行的,前后之间没有依赖关系的,就要用到并发执行
函数的定义和调用
定义函数的格式
function 函数名 {
命令序列
}
或者是
函数名(){
命令序列
}
在函数调用时,函数中的代码才能被执行
定义函数要在最开始就定义函数