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

Bash脚本中同时使用选项与参数:新增--save选项实现数据保存

实现方案

你可以通过全局变量标记--save选项,同时调整主循环的参数处理逻辑,先识别全局选项再处理命令函数。以下是具体修改步骤:

1. 初始化全局标记变量

在主循环前添加全局变量,默认设置为不保存状态:

# 初始化保存标记,0=不保存,1=需要保存
SAVE_OUTPUT=0

2. 修改主循环处理--save选项

在主循环的case语句中新增--save分支,遇到该选项时切换标记并跳过参数:

while (( $# ))
do
    case "$1" in

        --help | -h)
            usage
            exit 0
        ;;

        --version | -v)
            version
            exit 0
        ;;

        --save)
            # 标记需要保存输出
            SAVE_OUTPUT=1
            shift  # 跳过当前参数
        ;;

        funcone        \
        | functwo      \
        | functhree     )
            command=$1
            shift
            "app-$command" "$@"  # 传递剩余参数给对应函数
            exit 0
        ;;

        *)
            badUsage "Option/command not recognized."   
            exit 1
        ;;

    esac
done

badUsage
exit 1

3. 在函数中根据标记处理输出

以app-funcone为例,修改函数逻辑,根据SAVE_OUTPUT的值决定是否将curl结果保存到文件:

app-funcone() {
    # 执行curl获取数据
    local curl_data=$(curl "https://your-target-api.com")
    
    if (( SAVE_OUTPUT == 1 )); then
        # 保存到文件(可自定义文件名,这里用函数名作为前缀)
        echo "$curl_data" > "${FUNCNAME}_output.txt"
        echo "数据已保存到 ${FUNCNAME}_output.txt"
    else
        # 正常输出到终端
        echo "$curl_data"
    fi
}

调用示例

  • 不保存输出:./your-script.sh funcone
  • 保存输出:./your-script.sh --save funcone

注意:--save作为全局选项,需要放在命令(如funcone)之前;如果需要支持--save在命令之后,可在函数内部添加参数处理逻辑,但会增加复杂度,建议统一全局选项前置的调用方式。

内容的提问来源于stack exchange,提问作者MVB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:55:42