jq - 将传递的参数与字符串连接起来

alv*_*lla 4 bash json jq

如果参数没有被引号括起来,我就可以使用它们:

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

echo $var
Run Code Online (Sandbox Code Playgroud)

结果:

{
  Name: "my-hostname"
}
Run Code Online (Sandbox Code Playgroud)

但我想将变量与现有字符串连接起来,它会忽略该值:

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

echo $var
Run Code Online (Sandbox Code Playgroud)

结果:

{
  Name: "prefix-value-"
}
Run Code Online (Sandbox Code Playgroud)

预期的:

{
  Name: "prefix-value-my-hostname"
}
Run Code Online (Sandbox Code Playgroud)

ike*_*ami 14

代替

"prefix-value-$hostname"
Run Code Online (Sandbox Code Playgroud)

"prefix-value-\( $hostname )"
Run Code Online (Sandbox Code Playgroud)

江青播放

或者

"prefix-value-" + $hostname
Run Code Online (Sandbox Code Playgroud)

江青播放


请注意,由于主机名不能包含换行符,-n因此可以用和 stdin--arg替换。-R

"prefix-value-$hostname"
Run Code Online (Sandbox Code Playgroud)

江青播放