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

使用jq时如何将传入的命名参数与固定字符串拼接

问题根源

你遇到的问题是因为jq的双引号字符串默认不会解析$开头的变量引用,只有直接作为JSON值的变量才会被识别。你把$hostname写在双引号内部时,jq会将其视为普通字符串片段,而不会读取你传入的参数值。

正确实现方式

方法1:使用+运算符拼接字符串

jq支持直接用+拼接字符串类型的字面量和变量,写法如下:

var=$(jq -n --arg hostname "my-hostname" '{
  Name: "prefix-value-" + $hostname
}')

echo $var

运行后输出即为你预期的结果:

{
  "Name": "prefix-value-my-hostname"
}

方法2:使用字符串插值语法

如果你希望直接把变量嵌入到字符串内部,可以用jq提供的\(表达式)插值语法,包裹需要解析的变量即可:

var=$(jq -n --arg hostname "my-hostname" '{
  Name: "prefix-value-\($hostname)"
}')

echo $var

两种写法的运行效果完全一致,你可以根据场景选择更易读的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:51:04