45 lines
1.7 KiB
Bash
45 lines
1.7 KiB
Bash
#!/bin/bash
|
||
|
||
name=flykhan
|
||
echo "0 $name"
|
||
echo "main $$"
|
||
|
||
# 使用圆括号创建子shell
|
||
# () 不影响
|
||
(name=Lucy; echo "1 $name"; echo "() $$")
|
||
echo "0 $name"
|
||
|
||
# 使用花括号进行命令扩展和分组,记得语句后的 ';'
|
||
{ name=Jack; echo "2 $name"; echo "{} $$"; }
|
||
echo "0 $name"
|
||
|
||
|
||
|
||
# 在 Bash 脚本中,圆括号 `()` 和花括号 `{}` 有不同的用途和行为。
|
||
|
||
# 1. 圆括号 `()`
|
||
# - 用途:
|
||
# - 创建子shell:在圆括号中的命令序列将在一个子shell 中执行,子shell 是一个独立的进程,它会继承父shell 的环境变量和文件描述符,但是变量的修改在子shell 中不会影响到父shell。
|
||
# - 数组赋值:在圆括号中可以定义数组,并将值赋给数组。
|
||
# - 示例:
|
||
# ```bash
|
||
# (command1; command2; command3)
|
||
# ```
|
||
# - 注意事项:
|
||
# - 在圆括号中的命令序列与外部环境是隔离的,所以在子shell 中定义的变量对于父shell 是不可见的。
|
||
|
||
# 2. 花括号 `{}`
|
||
# - 用途:
|
||
# - 命令扩展和分组:花括号可以用于扩展和分组命令,可以将多个命令组合在一起,作为一个整体进行处理。
|
||
# - 文件名扩展:花括号可以用于生成文件名的列表,例如使用通配符进行文件名扩展。
|
||
# - 示例:
|
||
# ```bash
|
||
# { command1; command2; }
|
||
# ```
|
||
# - 注意事项:
|
||
# - 花括号中的命令序列会在当前shell 中执行,不会创建子shell。
|
||
# - 花括号中的命令序列可以使用分号 `;` 或换行符分隔多个命令。
|
||
|
||
# 总结:
|
||
# - 圆括号 `()` 用于创建子shell,并在子shell 中执行命令序列。
|
||
# - 花括号 `{}` 用于命令扩展和分组,将多个命令组合在一起进行处理。 |