shell¶
跟新于 2022-01-08
变量¶
条件变量¶
特殊变量¶
| 参数 | 说明 |
|---|---|
| $0 | shell本身文件名 |
| $? | 最后运行命令的返回值 |
| $! | shell最后运行的后台process的PID |
| $$ | shell本身的pid |
| $# | shell的参数个数 |
| $@ | 所有参数列表,以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个 |
| $* | 所有参数列表,以"\(1" "\)2" … "$n" 的形式输出所有参数 |
if¶
基本语法:¶
| Bash | |
|---|---|
1 2 3 4 5 6 7 | |
判断文件/文件夹(目录)¶
| 判断 | 说明 |
|---|---|
| [ -b FILE ] | 如果 FILE 存在且是一个块特殊文件则为真 |
| [ -c FILE ] | 如果 FILE 存在且是一个字特殊文件则为真 |
| [ -d DIR ] | 如果 FILE 存在且是一个目录则为真 |
| [ -e FILE ] | 如果 FILE 存在则为真 |
| [ -f FILE ] | 如果 FILE 存在且是一个普通文件则为真 |
| [ -g FILE ] | 如果 FILE 存在且已经设置了SGID则为真 |
| [ -k FILE ] | 如果 FILE 存在且已经设置了粘制位则为真 |
| [ -p FILE ] | 如果 FILE 存在且是一个名字管道(F如果O)则为真 |
| [ -r FILE ] | 如果 FILE 存在且是可读的则为真 |
| [ -s FILE ] | 如果 FILE 存在且大小不为0则为真 |
| [ -t FD ] | 如果文件描述符 FD 打开且指向一个终端则为真 |
| [ -u FILE ] | 如果 FILE 存在且设置了SUID (set user ID)则为真 |
| [ -w FILE ] | 如果 FILE存在且是可写的则为真 |
| [ -x FILE ] | 如果 FILE 存在且是可执行的则为真 |
| [ -O FILE ] | 如果 FILE 存在且属有效用户ID则为真 |
| [ -G FILE ] | 如果 FILE 存在且属有效用户组则为真 |
| [ -L FILE ] | 如果 FILE 存在且是一个符号连接则为真 |
| [ -N FILE ] | 如果 FILE 存在且最后一次读取之后未被修改则为真 |
| [ -S FILE ] | 如果 FILE 存在且是一个套接字则为真 |
| [ FILE1 -nt FILE2 ] | 如果FILE1比FILE2新,或FILE1存在而FILE2不存在则为真 |
| [ FILE1 -ot FILE2 ] | 如果FILE2比FILE1新,或FILE2存在且FILE1不存在则为真 |
| [ FILE1 -ef FILE2 ] | 如果FILE1和FILE2 指向相同的设备和节点号则为真 |
判断字符串¶
| 判断 | 说明 |
|---|---|
| [ -z STRING ] | 如果STRING的长度为零则为真 |
| [ -n STRING ] | 如果STRING的长度非零则为真 |
| [ STRING1 = STRING2 ] | 如果两个字符串相同则为真 |
| [ STRING1 != STRING2 ] | 如果字符串不相同则为真 |
| [ STRING1 ] | 如果字符串不为空则为真 |
数值判断¶
| 判断 | 说明 |
|---|---|
| INT1 -eq INT2 | INT1和INT2两数相等为真 |
| INT1 -ne INT2 | INT1和INT2两数不等为真 |
| INT1 -gt INT2 | INT1大于INT1为真 |
| INT1 -ge INT2 | INT1大于等于INT2为真 |
| INT1 -lt INT2 | INT1小于INT2为真 |
| INT1 -le INT2 | INT1小于等于INT2为真 |
复杂逻辑判断¶
| 符号 | 含义 |
|---|---|
| -a | 逻辑与 |
| -o | 逻辑或 |
| ! | 逻辑非 |
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
case¶
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 10 | |