一、Shell 变量
定义变量
1 | name="czh" |
- 定义变量时,变量名不加美元符号
- 二次赋值时,变量名不加美元符号
- 变量名和等号之间不能有空格
使用变量
1 | name="czh" |
- 使用一个定义过的变量,只要在变量名前面加美元符号即可
- 变量名外面的花括号是可选的
Shell 字符串
1 | string="abcd" |
Shell 数组
1 | array_name=(A B "C" D) |
bash只支持一维数组,并且没有限定数组的大小
在 Shell 中,用括号来表示数组,数组元素用”空格“符号分割开
二、Shell 基本运算符
1 | !/bin/bash |
- 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如
awk
和expr
- 表达式和运算符之间要有空格
- 乘号(*)前边必须加反斜杠(
\
)才能实现乘法运算;
1 | !/bin/bash |
关系运算符
假定变量 a 为 10,变量 b 为 20
-eq |
检测两个数是否相等,相等返回 true | [ $a -eq $b ] 返回 false |
---|---|---|
-ne |
检测两个数是否不相等,不相等返回 true | [ $a -ne $b ] 返回 true |
-gt |
检测左边的数是否大于右边的,如果是,则返回 true | [ $a -gt $b ] 返回 false |
-lt |
检测左边的数是否小于右边的,如果是,则返回 true | [ $a -lt $b ] 返回 true |
-ge |
检测左边的数是否大于等于右边的,如果是,则返回 true | [ $a -ge $b ] 返回 false |
-le |
检测左边的数是否小于等于右边的,如果是,则返回 true | [ $a -le $b ] 返回 true |
布尔运算符
假定变量 a 为 10,变量 b 为 20
! |
非运算,表达式为 true 则返回 false,否则返回 true | [ ! false ] 返回 true |
---|---|---|
-o |
或运算,有一个表达式为 true 则返回 true | [ $a -lt 20 -o $b -gt 100 ] 返回 true |
-a |
与运算,两个表达式都为 true 才返回 true | [ $a -lt 20 -a $b -gt 100 ] 返回 false |
逻辑运算符
假定变量 a 为 10,变量 b 为 20
&& | 逻辑的 AND | [[ $a -lt 100 && $b -gt 100 ]] 返回 false |
||||
---|---|---|---|---|---|---|
\ | \ | 逻辑的 OR | [[ $a -lt 100 \ | \ | $b -gt 100 ]] 返回 true |
判断上一个命令是否执行成功
shell中使用符号$?
来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败。
1 | if [ $? -eq 0 ]; then |
1 | 在 bash shell 中,$( ) 与` ` (反引号) 都是用来做命令替换用(commandsubstitution)的 |
三、Shell输入
基本读取
1 | read -p "Enter your name:" name |
-p
指定提示语句-n
限定字符个数-t
设置等待时间-s
不显示
注: 如果不指定变量名,那么read命令把接收到的输入放在环境变量REPLY
中,我们可以正常使用环境变量REPLY
。
输入多个数据
1 | read -p "Enter your name age id_card address:" name age id_card address |
- 如果输入数据个数过多,远大于变量个数,则多余的所有数据都给最后一个变量
读文件
1 | !/bin/bash |
- 每次调用read命令都会读取文件中的”一行”文本
- 当文件没有可读的行时,read命令将以非零状态退出
四、shell函数
1 | [ function ] funname [()] |
- 可以带
function fun()
定义,也可以直接fun()
定义,不带任何参数 - 参数返回,可以显示加:return 返回;如果不加,将以最后一条命令运行结果,作为返回值
- return后跟数值
n(0-255 )
舆情项目自动部署脚本
1 | !/bin/sh |