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

kubectl向容器内Shell脚本传参异常:仅首个参数生效如何解决

解决kubectl exec传递多个参数时仅第一个参数生效的问题

你的问题出在嵌套引号的解析冲突上:外层ssh命令用双引号包裹整个远程执行内容,内层bash -c又使用双引号,导致shell提前截断了参数。当shell读到bash -c "/my_script.sh --${version}后的双引号时,会判定外层ssh的命令参数已结束,后续--${remote_ip}等部分被当作独立的ssh参数,而非bash -c要执行的命令内容,因此只有第一个参数被传递给脚本。

修复方法有两种:

方法1:用单引号包裹bash -c的命令内容

外层双引号内的单引号会被当作普通字符,既能让bash -c的整个命令作为完整参数传递,也不影响本地变量的解析:

sshpass -p password ssh ubunt@${slave_ip} "kubectl exec -it pod_name -c container_name -- bash -c '/my_script.sh --${version} --${remote_ip} --${password} --${range} --${env}'"

方法2:转义内层的双引号

给bash -c后面的双引号添加反斜杠转义,避免提前闭合外层双引号:

sshpass -p password ssh ubunt@${slave_ip} "kubectl exec -it pod_name -c container_name -- bash -c \"/my_script.sh --${version} --${remote_ip} --${password} --${range} --${env}\""

额外提示

如果变量包含空格或特殊字符,建议先用printf "%q" "$var"对变量转义,避免多层shell解析时出现意外问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:10:29