182 lines
2.8 KiB
Markdown
182 lines
2.8 KiB
Markdown
## 一、shell
|
||
|
||
### 1.1 shell 解释器
|
||
|
||
```
|
||
/bin/bash [默认]
|
||
/bin/sh
|
||
```
|
||
|
||
### 1.2 shell 脚本调用
|
||
|
||
系统自动调用:
|
||
|
||
```
|
||
/etc/profile 系统环境变量, 每次系统启动时调用
|
||
~/.bashrc 用户环境变量, 用户登录时调用
|
||
```
|
||
|
||
用户调用:
|
||
|
||
```
|
||
1) chmod +x xxx.sh
|
||
./xxx.sh
|
||
2) bash xxx.sh
|
||
3) . xxx.sh 相当于 source xxx.sh
|
||
```
|
||
|
||
### 1.3 shell 脚本的定义
|
||
|
||
第一行:
|
||
|
||
```
|
||
#!/bin/bash
|
||
```
|
||
|
||
### 1.4 shell 变量
|
||
|
||
```
|
||
定义: 变量名=值
|
||
引用: $变量名, "$变量名 xxx"
|
||
重新赋值: 变量名=新值
|
||
算术计算: 变量名=$(( 变量名 算术运算符 值 ))
|
||
|
||
预定变量: $#, $*, $?, $1~9, $0 进程名, $$ 进程ID
|
||
环境变量: $环境变量名
|
||
export 变量名=值 设置环境变量
|
||
|
||
特殊的变量写法: (变量名=值; 其它语句) 不影响外部的同名变量
|
||
{变量名=值; 其它语句;} 影响外部的同名变量
|
||
```
|
||
|
||
### 1.5 条件测试语句
|
||
|
||
语法:
|
||
|
||
```
|
||
test 操作符 变量
|
||
test 变量1 操作符 变量2
|
||
[ 操作符 变量 ]
|
||
[ 变量1 操作符 变量2 ]
|
||
```
|
||
|
||
文件相关:
|
||
|
||
```
|
||
-e 是否存在 -d 是目录 -f 是文件
|
||
-r 可读 -w 可写 -x 可执行
|
||
-L 符号连接 -c 是否字符设备 -b 是否块设备
|
||
-s 文件非空
|
||
```
|
||
|
||
字符串相关:
|
||
|
||
```
|
||
= 两个字符串相等 != 两个字符串不相等
|
||
-z 空串 -n 非空串
|
||
```
|
||
|
||
数字相关:
|
||
|
||
```
|
||
-eq 数值相等 -ne 数值不相等
|
||
-gt 数 1 大于数 2 -ge 数 1 大于等于数 2
|
||
-lt 数 1 小于数 2 -le 数 1 小于等于数 2
|
||
```
|
||
|
||
复合测试相关:
|
||
|
||
```
|
||
command1 && command2 左边命令执行成功(即返回 0)shell 才执行右边的命令
|
||
command1 || command2 左边的命令未执行成功(即返回非 0)shell 才执行右边的命令
|
||
```
|
||
|
||
多重条件判定:
|
||
|
||
```
|
||
-a 多个条件必须都为真(true) 结果才为true
|
||
-o 多个条件中只需要一个为真,结果为true
|
||
! 条件取反
|
||
```
|
||
|
||
### 1.6 分支语句
|
||
|
||
if 分支:
|
||
|
||
```
|
||
if [ 条件1 ]; then
|
||
执行第一段程序
|
||
elif [条件2 ]; then
|
||
执行第二段程序
|
||
else
|
||
执行第三段程序
|
||
fi
|
||
```
|
||
|
||
case 分支:
|
||
|
||
```
|
||
case $变量名称 in
|
||
“第一个变量内容”)
|
||
程序段一
|
||
;;
|
||
“第二个变量内容”)
|
||
程序段二
|
||
;;
|
||
*)
|
||
其它程序段
|
||
exit 1
|
||
esac
|
||
```
|
||
|
||
for 语句:
|
||
|
||
```
|
||
for (( 初始值; 限制值; 执行步阶 ))
|
||
do
|
||
程序段
|
||
done
|
||
```
|
||
|
||
while 语句:
|
||
|
||
```
|
||
while [ condition ]
|
||
do
|
||
程序段
|
||
done
|
||
```
|
||
|
||
until 语句:
|
||
|
||
```
|
||
until [ condition ]
|
||
do
|
||
程序段
|
||
done
|
||
```
|
||
|
||
循环语句中可以使用 break 和 continue。
|
||
|
||
### 1.7 函数
|
||
|
||
定义函数:
|
||
|
||
```
|
||
函数名(){
|
||
命令 ...
|
||
}
|
||
|
||
function 函数名(){
|
||
命令 ...
|
||
}
|
||
```
|
||
|
||
调用函数:
|
||
|
||
```
|
||
函数名 param1 param2……
|
||
```
|
||
|
||
函数体内,可以使用$1,$2 ...$9 读取传递到函数的参数。
|