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

如何在Bash脚本中将变量传入jq的select查询语句?

解决jq调用Bash变量的语法问题

推荐方法:使用jq的--arg参数传递变量

这是最安全可靠的方式,能避免特殊字符转义问题,还能防止注入风险:

jq -r --arg sp_val "$spName" '.[] | select(.principalName==$sp_val) | .principalName' sp.txt
  • --arg sp_val "$spName":把Bash变量$spName的值传递给jq,在jq内部用$sp_val引用这个值(变量名可自定义,无需和Bash变量名一致)
  • 保持jq表达式用单引号包裹,避免Bash干扰其内部语法

备选方法:通过Bash变量展开(需处理引号转义)

如果要直接在jq表达式中展开Bash变量,需将整个jq表达式用双引号包裹,同时转义jq内部的双引号:

jq -r ".[] | select(.principalName==\"$spName\") | .principalName" sp.txt

注意:这种方法仅适用于$spName为简单字符串的场景,若变量包含特殊字符(如双引号、反斜杠)会出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:02:42