You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash命令行单次调用script.sh中指定的多个函数顺序执行

问题根因

  • 原脚本的case分支匹配到第一个传入的函数名后,执行完直接调用了exit,导致脚本直接终止,后续传入的函数没有执行机会
  • 函数内部的$1 && shift && "@a"属于无效写法,无实际作用还可能引发报错
  • 原脚本没有遍历所有传入参数的逻辑,只能处理第一个传入的函数名

修复后可实现需求的脚本代码

#!/bin/bash

delete_code() { 
    echo "code deleted"
}

create_code() { 
    echo "code created"
}

stop_node_pool() { 
    echo "node pool stopped"
}

start_node_pool() { 
    echo "node pool start"
}

# 遍历所有传入的参数,依次执行匹配的函数
for func in "$@"; do
    case $func in
        delete_code|create_code|stop_node_pool|start_node_pool)
            "$func"
            ;;
        *)
            echo "警告:不存在的函数名 $func,已跳过"
            ;;
    esac
done

使用方法

不需要加多余的run前缀,直接把要执行的函数名按顺序作为参数传入脚本即可,比如要先执行delete_code再执行stop_node_pool,直接运行:
./script.sh delete_code stop_node_pool
执行输出会按顺序返回:

code deleted
node pool stopped

方案支持传入任意数量的合法函数名,会严格按照传入顺序依次执行。

内容的提问来源于stack exchange,提问作者Athithanambi Anna Anban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:39:02