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

如何在Bash脚本中调用函数并向目标函数注入输入参数

解决方案

方法1:使用管道传递输入

直接通过echo输出'2',再用管道传递给DoingSomething的read命令,替代终端输入:

function DoingSomething {
    read -r input
    if [ "$input" == '1' ]; then
        echo "执行操作1"
    elif [ "$input" == '2' ]; then
        echo "执行操作2"
    else
        echo -e "输入无效!"
    fi
}

function DoingThat {
    param=60 # 示例参数
    if [ $param -gt 50 ]; then
        echo '2' | DoingSomething
    else
        echo -e "你没问题!"
    fi
}

DoingThat

方法2:使用Here字符串(更简洁)

Bash支持<<<语法,直接将字符串作为命令的标准输入,写法更简洁:

function DoingSomething {
    read -r input
    if [ "$input" == '1' ]; then
        echo "执行操作1"
    elif [ "$input" == '2' ]; then
        echo "执行操作2"
    else
        echo -e "输入无效!"
    fi
}

function DoingThat {
    param=60 # 示例参数
    if [ $param -gt 50 ]; then
        DoingSomething <<< '2'
    else
        echo -e "你没问题!"
    fi
}

DoingThat

方法3:修改函数为接受参数(推荐)

让DoingSomething直接接受命令行参数,避免依赖终端输入,这种方式更可靠,也更符合脚本自动化的设计思路:

function DoingSomething {
    local input="$1" # 从第一个参数获取输入
    if [ "$input" == '1' ]; then
        echo "执行操作1"
    elif [ "$input" == '2' ]; then
        echo "执行操作2"
    else
        echo -e "输入无效!"
    fi
}

function DoingThat {
    param=60 # 示例参数
    if [ $param -gt 50 ]; then
        DoingSomething '2' # 直接传递参数
    else
        echo -e "你没问题!"
    fi
}

DoingThat

原代码的几个错误修正

  • 条件判断的方括号[和]两侧必须加空格,比如原代码的elif [\"$input\" == '2' ];要改成elif [ "$input" == '2' ];
  • 代码中的转义引号\"是多余的,直接使用"即可
  • 反引号`DoingSomething`的用法错误,反引号是用来捕获命令输出的,这里直接调用函数只需写DoingSomething即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:52:26