qfedu-linux-advanced-level/day1/d13.sh

45 lines
1.7 KiB
Bash
Raw Normal View History

2023-08-14 15:53:04 +08:00
#!/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 中执行命令序列。
# - 花括号 `{}` 用于命令扩展和分组,将多个命令组合在一起进行处理。