定义:利用shell的命令所写的一个可以执行的程序,这个程序是纯文本文件,把一些业务操作使用控制语句连接起来,有了一定的逻辑关系。也可以搭配一些shell的语法或重定向,以达到我们所要实现的目的。
好处就是为了实现功能的自动化操作。
一、 基本语法
第一行:#!/bin/bash
第二行起:正常的逻辑代码
使用#进行单行注释,:<<符号 语句 符号 多行注释(eg. :<<! num=1 !)
#!/bin/bash
echo hello
# 单行注释
:<<! 这里!换成任意符号都行 只要前后匹配
多行注释
dashjahdjahd
!
二、 数值运算
1. $[]
num=1
echo $[$num+=1] 输出2
2. (())
优点:
- 支持a++,a–操作
- 支持多个表达式运算,各个表达式之间用“,”分开
- 双括号可以进行逻辑运算,四则运算
- 双括号结构 扩展了for,while,if条件测试运算
- 在双括号结构中,所有变量可以不加入:“$”符号前缀
使用方法:((表达式1,表达式2,表达式3))
num=1
((a=num+1,b=a+1))
如果双括号带:$,将获得表达式值,赋值给左边变量
a=10
b=10
total=$((a*b))
3. let 表达式
注意:let必须是完整的算术表达式,即有等号两边
var=1
let "var+=1" 或 let var+=1 这种写法运算符间不能有空格
三、大小判断
数值判断 | 字符串判断 |
---|---|
-eq 相等 -ne 不等 -gt 大于 -ge 大于等于 -lt 小于 -le 小于等于 | == 等于 != 不等 |
四、控制语句
1. 判断
- if判断
if [ 判断式 ] 逻辑连接符 [ 判断式 ] ; then
执行语句
elif [ 判断式 ] 逻辑连接符 [ 判断式 ] ; then
执行语句
......
else
执行语句
fi
- case判断
case $变量名 in
匹配的内容 )
执行语句
;;
匹配的内容 )
执行语句
;;
......
* )
执行语句
;;
esac
2. 循环
- while循环 满足条件时执行
while [ 执行条件 ]
do
循环体
done
- until循环 满足条件时终止
until [ 执行条件 ]
do
循环体
done
-
for循环
1)固定循环
for i in 1 2 3 4 5 6 7 8 9 10 do 循环体 done
2)不固定循环,语法与Java类似
for ((i=1;i<=10;i++)) do 循环体 done
五、函数
把一些公共的代码封装成一个函数,使用的时候直接调用
好处:避免代码冗余。
1. 定义函数
function 函数名 () {
函数体
}
注意:
- 定义函数有括号没有形参,参数的个数由调用时传递的实参确定
- 在函数体内使用$n直接获取第n个实参
- 函数体内可以使用$#
- 获取实参的个数
- 如果函数有返回值,使用echo返回,不是return
2. 调用函数
函数名 参数1 参数2 ...
sayHello hello world
注意:
-
一定要先定义后调用,否则无法执行
-
调用的时候没有括号,参数用空格分隔
-
参数的个数没有限制,根据实际情况被调用
-
通过 变量名=$(函数名 参数 参数 …) 获得返回值
此种方法函数体内的echo不再进行输出