flykhan b205c2c28f | ||
---|---|---|
.. | ||
homework | ||
README.md | ||
d1.sh | ||
d2.sh | ||
d3.sh | ||
d4.sh | ||
d5.sh | ||
d6.sh | ||
d7.sh | ||
d8.sh | ||
d9.sh | ||
d10.sh | ||
d11.sh | ||
d12.sh | ||
d13.sh | ||
d14.sh | ||
d15.sh | ||
d16.sh | ||
d17.sh | ||
d18.sh | ||
d19.sh | ||
d20.sh | ||
d22.sh | ||
d23.sh | ||
d24.sh | ||
d25.sh | ||
d26.sh | ||
d27.sh | ||
d28.sh | ||
d29.sh | ||
svim.sh |
README.md
在 Bash 脚本中,圆括号 ()
和花括号 {}
有不同的用途和行为。
-
圆括号
()
- 用途:
- 创建子 shell:在圆括号中的命令序列将在一个子 shell 中执行,子 shell 是一个独立的进程,它会继承父 shell 的环境变量和文件描述符,但是变量的修改在子 shell 中不会影响到父 shell。
- 数组赋值:在圆括号中可以定义数组,并将值赋给数组。
- 示例:
(command1; command2; command3)
- 注意事项:
- 在圆括号中的命令序列与外部环境是隔离的,所以在子 shell 中定义的变量对于父 shell 是不可见的。
- 用途:
-
花括号
{}
- 用途:
- 命令扩展和分组:花括号可以用于扩展和分组命令,可以将多个命令组合在一起,作为一个整体进行处理。
- 文件名扩展:花括号可以用于生成文件名的列表,例如使用通配符进行文件名扩展。
- 示例:
{ 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 是设置了粘滞位