diff --git a/common/demo_usage.sh b/common/demo_usage.sh index 95e82a2..672275e 100755 --- a/common/demo_usage.sh +++ b/common/demo_usage.sh @@ -48,20 +48,31 @@ load_common_libs() { # 使用远程库 if [[ "$use_remote" == "true" ]]; then + # 下载到临时文件(避免 process substitution 与 set -u 的交互问题) + local temp_loader + temp_loader=$(mktemp) + if command -v curl &>/dev/null; then echo "[INFO] 使用 curl 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi elif command -v wget &>/dev/null; then echo "[INFO] 使用 wget 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi fi + rm -f "$temp_loader" echo "[ERROR] 无法加载公共库" >&2 echo "[ERROR] - 本地库不存在" >&2 echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2 diff --git a/gcp/create_ai_projects.sh b/gcp/create_ai_projects.sh index a2f278e..101d4cd 100644 --- a/gcp/create_ai_projects.sh +++ b/gcp/create_ai_projects.sh @@ -48,20 +48,31 @@ load_common_libs() { # 使用远程库 if [[ "$use_remote" == "true" ]]; then + # 下载到临时文件(避免 process substitution 与 set -u 的交互问题) + local temp_loader + temp_loader=$(mktemp) + if command -v curl &>/dev/null; then echo "[INFO] 使用 curl 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi elif command -v wget &>/dev/null; then echo "[INFO] 使用 wget 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi fi + rm -f "$temp_loader" echo "[ERROR] 无法加载公共库" >&2 echo "[ERROR] - 本地库不存在" >&2 echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2 diff --git a/gcp/delete_all_projects.sh b/gcp/delete_all_projects.sh index 4c6214f..dc77322 100644 --- a/gcp/delete_all_projects.sh +++ b/gcp/delete_all_projects.sh @@ -49,20 +49,31 @@ load_common_libs() { # 使用远程库 if [[ "$use_remote" == "true" ]]; then + # 下载到临时文件(避免 process substitution 与 set -u 的交互问题) + local temp_loader + temp_loader=$(mktemp) + if command -v curl &>/dev/null; then echo "[INFO] 使用 curl 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi elif command -v wget &>/dev/null; then echo "[INFO] 使用 wget 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi fi + rm -f "$temp_loader" echo "[ERROR] 无法加载公共库" >&2 echo "[ERROR] - 本地库不存在" >&2 echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2 diff --git a/linux/create_raid0_array.sh b/linux/create_raid0_array.sh index 195622a..0224570 100755 --- a/linux/create_raid0_array.sh +++ b/linux/create_raid0_array.sh @@ -49,20 +49,31 @@ load_common_libs() { # 使用远程库 if [[ "$use_remote" == "true" ]]; then + # 下载到临时文件(避免 process substitution 与 set -u 的交互问题) + local temp_loader + temp_loader=$(mktemp) + if command -v curl &>/dev/null; then echo "[INFO] 使用 curl 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi elif command -v wget &>/dev/null; then echo "[INFO] 使用 wget 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi fi + rm -f "$temp_loader" echo "[ERROR] 无法加载公共库" >&2 echo "[ERROR] - 本地库不存在" >&2 echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2 diff --git a/linux/install_oh_my_zsh.sh b/linux/install_oh_my_zsh.sh index fb6d60b..f5aa06a 100644 --- a/linux/install_oh_my_zsh.sh +++ b/linux/install_oh_my_zsh.sh @@ -48,20 +48,31 @@ load_common_libs() { # 使用远程库 if [[ "$use_remote" == "true" ]]; then + # 下载到临时文件(避免 process substitution 与 set -u 的交互问题) + local temp_loader + temp_loader=$(mktemp) + if command -v curl &>/dev/null; then echo "[INFO] 使用 curl 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi elif command -v wget &>/dev/null; then echo "[INFO] 使用 wget 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi fi + rm -f "$temp_loader" echo "[ERROR] 无法加载公共库" >&2 echo "[ERROR] - 本地库不存在" >&2 echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2 diff --git a/linux/repartition_disks.sh b/linux/repartition_disks.sh index f024795..900df76 100644 --- a/linux/repartition_disks.sh +++ b/linux/repartition_disks.sh @@ -49,20 +49,31 @@ load_common_libs() { # 使用远程库 if [[ "$use_remote" == "true" ]]; then + # 下载到临时文件(避免 process substitution 与 set -u 的交互问题) + local temp_loader + temp_loader=$(mktemp) + if command -v curl &>/dev/null; then echo "[INFO] 使用 curl 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi elif command -v wget &>/dev/null; then echo "[INFO] 使用 wget 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi fi + rm -f "$temp_loader" echo "[ERROR] 无法加载公共库" >&2 echo "[ERROR] - 本地库不存在" >&2 echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2 diff --git a/oci/create_instance.sh b/oci/create_instance.sh index b8e0462..33c6add 100644 --- a/oci/create_instance.sh +++ b/oci/create_instance.sh @@ -48,20 +48,31 @@ load_common_libs() { # 使用远程库 if [[ "$use_remote" == "true" ]]; then + # 下载到临时文件(避免 process substitution 与 set -u 的交互问题) + local temp_loader + temp_loader=$(mktemp) + if command -v curl &>/dev/null; then echo "[INFO] 使用 curl 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi elif command -v wget &>/dev/null; then echo "[INFO] 使用 wget 下载远程库..." >&2 - # shellcheck disable=SC1090 - if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then - return 0 + if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then + # shellcheck disable=SC1090 + if source "$temp_loader"; then + rm -f "$temp_loader" + return 0 + fi fi fi + rm -f "$temp_loader" echo "[ERROR] 无法加载公共库" >&2 echo "[ERROR] - 本地库不存在" >&2 echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2