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

Bash脚本中jq的--arg参数未生效及大小写匹配问题排查

问题排查与解决:Bash脚本中jq参数传递失效及大小写匹配问题

一、jq参数传递失效的原因与修复

你在jq的contains("$e")里把变量$e放在了双引号中,这会让jq将其解析为字面量字符串"$e",而不是你通过--arg传入的变量值——这就是脚本中参数不生效的核心原因。

修正后的代码只需去掉$e周围的双引号即可:

#!/bin/bash
ACCOUNT=123456789
ENTITY=$1
DASHBOARDS=$(aws quicksight list-dashboards --aws-account-id ${ACCOUNT} | jq -r --arg e "$ENTITY" '.DashboardSummaryList[] | select(.Name|contains($e)) | .DashboardId')

二、大小写匹配问题的优化处理

你的大小写转换逻辑可以简化,无需调用echo和tr,直接利用Bash内置的参数展开功能就能完成,更高效简洁:

# 先将输入转为全小写
ENTITY=${1,,}

# 处理特殊例外
if [[ "$ENTITY" == "uk" || "$ENTITY" == "exception2" ]]; then
  ENTITY=${ENTITY^^} # 转为全大写
else
  ENTITY=${ENTITY^} # 首字母大写,其余小写
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:42:47