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