qfedu-linux-advanced-level/day1/README.md

55 lines
1.8 KiB
Markdown
Raw Normal View History

2023-08-14 15:53:04 +08:00
在 Bash 脚本中,圆括号 `()` 和花括号 `{}` 有不同的用途和行为。
1. 圆括号 `()`
- 用途:
- 创建子 shell在圆括号中的命令序列将在一个子 shell 中执行,子 shell 是一个独立的进程,它会继承父 shell 的环境变量和文件描述符,但是变量的修改在子 shell 中不会影响到父 shell。
- 数组赋值:在圆括号中可以定义数组,并将值赋给数组。
- 示例:
```bash
(command1; command2; command3)
```
- 注意事项:
- 在圆括号中的命令序列与外部环境是隔离的,所以在子 shell 中定义的变量对于父 shell 是不可见的。
2. 花括号 `{}`
- 用途:
- 命令扩展和分组:花括号可以用于扩展和分组命令,可以将多个命令组合在一起,作为一个整体进行处理。
- 文件名扩展:花括号可以用于生成文件名的列表,例如使用通配符进行文件名扩展。
- 示例:
```bash
{ command1; command2; }
```
- 注意事项:
- 花括号中的命令序列会在当前 shell 中执行,不会创建子 shell。
- 花括号中的命令序列可以使用分号 `;` 或换行符分隔多个命令。
总结:
- 圆括号 `()` 用于创建子 shell并在子 shell 中执行命令序列。
- 花括号 `{}` 用于命令扩展和分组,将多个命令组合在一起进行处理。
#### 判断文件
test -e "$1" # 与下面等价
[ -e "$1" ] # 与上面等价
更多判断
-d 是目录
-f 是文件
-e 是存在
-r 是可读
-w 是可写
-x 是可执行
-s 是非空
-h 是软链接
-L 是软链接
-p 是管道
-S 是 socket
-b 是块设备
-c 是字符设备
-t 是终端
-g 是设置了组 ID
-u 是设置了用户 ID
-k 是设置了粘滞位