qfedu-linux-advanced-level/README.md

182 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 一、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 左边命令执行成功(即返回 0shell 才执行右边的命令
command1 || command2 左边的命令未执行成功(即返回非 0shell 才执行右边的命令
```
多重条件判定:
```
-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 读取传递到函数的参数。