【问题标题】:Assign jq command to a variable and process the variable in later variables将 jq 命令分配给一个变量,并在后面的变量中处理该变量
【发布时间】:2020-11-28 04:47:34
【问题描述】:
kubectl get service boss-gateway -n boss-system -o json \
| jq ' (.metadata.labels.boss, .spec.selector.boss)|="internal-gateway"
| (.metadata.annotations["service.beta.kubernetes.io/aws-load-balancer-internal"]) |= "true" ' \
| kubectl apply -f - --dry-run=client -o yaml

我还有其他查询,使用这个 sn-p

| jq ' (.metadata.labels.boss, .spec.selector.boss)|="内部网关" | (.metadata.annotations["service.beta.kubernetes.io/aws-load-balancer-internal"]) |= "true" '

我可以分配给一个变量并在我的 bash 脚本中使用吗?

我试过这样

export test="jq' (.metadata.labels.istio, .spec.selector.istio)|="internal-ingressgateway"'"

kubectl 获取服务boss-gateway -n boss-system -o json
| ${测试}
| kubectl apply -f - --dry-run=client -o yaml 当我回显时,它显示正确并且我能够执行该查询 但是当我尝试在脚本中运行它时,它不起作用。任何想法,我在哪里失踪?

【问题讨论】:

  • 你试过把 $test 放在引号里吗?

标签: shell jq


【解决方案1】:

您似乎渴望的那种编程是可能的,但通常不值得付出努力,如果只是因为您通常会在自己的网络中纠缠不清。如果你想走这条路,那么考虑一下你的这个尝试:

export test="jq '(.metadata.labels.istio, .spec.selector.istio)|="internal-ingressgateway"'"

要完成这项工作,您必须转义内部的双引号:

export test="jq '(.metadata.labels.istio, .spec.selector.istio)|=\"internal-ingressgateway\"'"

如需更多灵感,请参阅 jq 1.5 multiple bash variables as argument

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-04
    • 2021-11-29
    • 2021-06-11
    • 1970-01-01
    • 2021-05-24
    • 2023-03-09
    • 1970-01-01
    • 2021-02-27
    相关资源
    最近更新 更多