如果参数没有被引号括起来,我就可以使用它们:
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)