Tento obter uma área de JSON criada por kubectl
outro usuário.
runuser -l username -c "kubectl get ing -A -o json | jq --arg namespace "default" -r '.items | map(select(.metadata.namespace==$namespace))'"
e pegue
jq: error: syntax error, unexpected ')' (Unix shell quoting issues?) at <top-level>, line 1:
.items | map(select(.metadata.namespace==))
jq: 1 compile error
O problema é que a
jq
expressão está apenas entre aspas duplas, pois faz parte da string entre aspas duplas que é o argumento dorunuser
comando.Portanto, a
jq
variável interna$namespace
será confundida pelo shell como uma variável do shell e será expandida para nada , pois não está definida como nada no shell. Isso introduz um erro de sintaxe najq
expressão.Para resolver isso com o mínimo de teclas possível, escape do
$
in$namespaces
as\$
. Isso irá "ocultá-lo" do shell:Alternativamente, use
runuser
para obter o JSON que você deseja analisar e analisá-lo depois (isso é o que eu faria, não faz sentido executarjq
como outro usuário):