Shell 脚本中为何使用 `{ ... }` 包裹整个脚本
📌 问题 在一些 Shell 脚本中,常常看到以下结构: #!/usr/bin/env bash { # this ensures the entire script is downloaded # # 脚本内容 some_function() { echo "Hello" } some_function } # this ensures the entire script is downloaded # 为什么要用 { ... } 把整个脚本包裹起来?这样做有什么好处? ✅ 答案 这是一个 Shell 脚本技巧,主要用于: 确保整个脚本在下载完成并被完全解析之后再执行 🧠 原因解释 在执行远程脚本时,例如: curl -s https://example.com/script.sh | bash 脚本是以流式方式传给 bash 的,会出现: 边下载边执行 如果下载中断,脚本会只执行了一部分 函数定义、变量赋值可能不完整,甚至执行危险命令 🛡 加上 { ... } 的作用 使用大括号包裹: { # 所有脚本内容 } 等于告诉 bash: ...