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

如何用Bash数组传递AWS SSO登录命令的选项?

AWS CLI数组参数正确写法解析

错误根源

你的写法把选项和对应值打包成了单个数组元素(比如'--profile myprofile'),再用"${params[*]}"展开时,Bash会把整个字符串作为一个完整参数传给AWS CLI。这就导致AWS把--profile myprofile识别成一个不存在的长选项,触发报错。

正确实现方式

必须把每个选项和它的值拆分成数组的独立元素,然后用"${params[@]}"展开数组(@会确保每个元素作为单独的命令参数传递):

# 初始化数组:选项与值各自为独立元素
params=('--profile' 'myprofile')
# 添加新的选项参数,同样拆分
params+=('--cli-read-timeout' '5')
# 执行命令,用@展开数组
aws sso login "${params[@]}"

核心差异说明

  • ${params[*]}:将数组所有元素拼接成单个字符串传递,等价于执行aws sso login "--profile myprofile --cli-read-timeout 5",这会被AWS CLI误判为单个未知选项。
  • ${params[@]}:将数组每个元素作为独立命令参数传递,效果和直接手写完整命令aws sso login --profile myprofile --cli-read-timeout 5完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:42:11