Wang Defa
89f24a7fef
fix: 修复所有脚本的 process substitution 兼容性问题
## 问题描述
在使用 `set -u` 严格模式时,`source <(curl ...)` 或 `source <(wget ...)`
的 process substitution 方式会在脚本退出时产生错误:
```
/dev/fd/63: line 1: fifo: unbound variable
```
## 根本原因
Process substitution 创建的临时文件描述符(如 /dev/fd/63)在退出时
与 Bash 的 `set -u` 严格模式存在兼容性问题,导致错误消息。
## 修复方案
将 process substitution 替换为临时文件方案:
**旧方案(有问题):**
```bash
source <(curl -fsSL "$url")
```
**新方案(兼容性好):**
```bash
temp_loader=$(mktemp)
curl -fsSL "$url" -o "$temp_loader"
source "$temp_loader"
rm -f "$temp_loader"
```
## 修改的文件
批量修复了所有 7 个脚本的远程加载逻辑:
- oci/create_instance.sh
- linux/create_raid0_array.sh
- linux/install_oh_my_zsh.sh
- linux/repartition_disks.sh
- gcp/create_ai_projects.sh
- gcp/delete_all_projects.sh
- common/demo_usage.sh
## 优势
- ✅ 避免 process substitution 的兼容性问题
- ✅ 与 `set -u` 严格模式完全兼容
- ✅ 显式的临时文件管理,更易理解
- ✅ 确保所有分支都正确清理临时文件
- ✅ 保持 curl/wget 双重支持不变
2025-12-26 15:20:51 +08:00
..
2025-12-26 15:20:51 +08:00
2025-12-26 15:20:51 +08:00