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

45 lines
1.7 KiB
Bash
Raw Permalink 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.

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