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

如何在Bash脚本的Docker命令中传递并使用脚本参数?

解决Docker exec命令中Bash变量无法传递到容器内的问题

问题出在你用了单引号包裹bash -c的命令内容——Bash里单引号会完全保留字符串的字面意义,不会解析外部脚本中的$location和$index变量,容器内的bash会尝试读取自身环境里的同名变量,而这些变量根本不存在,所以导致参数传递失败。

下面是两种可行的解决方法:

方法1:改用双引号包裹命令内容

把bash -c后的单引号换成双引号,这样外部脚本的变量会被先解析,再传递给容器内的bash执行:

docker exec myDockerContainer_1 bash -c "myMigrationScript --pw=$location --pwOld=1234 --indexToStartAt=$index"

这种方式适合变量内容不含特殊字符(比如空格、引号)的场景,你的参数是数字和普通字符串,完全适用。

方法2:通过位置参数安全传递变量(推荐)

如果变量可能包含特殊字符,或者想避免意外的变量解析问题,推荐用bash -c的位置参数传递方式:

index=$1
location=$2
docker exec myDockerContainer_1 bash -c 'myMigrationScript --pw="$1" --pwOld=1234 --indexToStartAt="$2"' _ "$location" "$index"

这里的_是占位符(对应容器内bash的$0),后面的"$location"和"$index"会作为容器内bash的$1和$2被读取,容器内的命令用"$1"、"$2"引用这些参数,能确保变量内容被正确传递,不会被意外解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:05:23