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

zsh终端执行bash脚本无法正常传递命令行参数问题排查

故障原因

脚本末尾调用main函数时,硬编码传入了固定参数@a。
Bash 函数内部的$1、$2等位置变量,仅对应当前函数被调用时传入的参数,和脚本启动时接收的外部命令行参数无关。因此无论执行脚本时传入什么内容,main函数读取到的永远是写死的@a,自然无法拿到外部传入的参数值。

修改方案

将最后一行的固定传参改为透传脚本接收的所有位置参数,也就是把main "@a"替换为main "$@"。
修改后完整代码:

#!/bin/bash

main(){
  name=${1:-you}
  echo "One for $name, one for me."
}

main "$@"

这里的"$@"是Bash内置特殊变量,作用是把脚本接收到的所有位置参数原样逐个传递给main函数,没有传参时它会展开为空,正好触发代码里预设的${1:-you}默认值逻辑。

验证结果
  • 带参数执行:运行命令bash tw_fer.sh Adem,正常输出One for Adem, one for me.
  • 无参数执行:运行命令bash tw_fer.sh,正常输出One for you, one for me.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:54:34