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

55 lines
1.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.

在 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 是设置了粘滞位