字符串插值中的 jq 过滤表达式

Aks*_*til 6 json string-interpolation jq

我一直在尝试将数组减少为字符串以用于字符串插值。

例如。

input = ["123", "456"]
expected output = array=123,456
Run Code Online (Sandbox Code Playgroud)

这是我的尝试

$ echo '["123", "456"]' | jq 'array=\(.|join(","))'
jq: error: syntax error, unexpected INVALID_CHARACTER (Unix shell quoting issues?) at <top-level>, line 1:
array=\(.|join(","))
jq: 1 compile error
Run Code Online (Sandbox Code Playgroud)

Ini*_*ian 12

使用字符串插值\(.),您可以执行如下操作。您的想法几乎是正确的,但是插值使用\(..)需要过滤器出现在字符串内部,并在反斜杠之后的括号内定义要使用的表达式

jq --raw-output '"array=\(join(","))"'
Run Code Online (Sandbox Code Playgroud)