Jq: ошибка: синтаксическая ошибка, неожиданный «-», ожидание «}» (проблемы с цитированием оболочки Unix?) в <top-level>, строка 1:

Я пытаюсь запустить команду jq через ssh-agent в конвейере Jenkins. Но я получаю следующую ошибку: Пытаюсь запустить: `

        stage("common-infra-deployment"){
            steps{
                sshagent (credentials: ['test-private-key']){
                    script{
                       
                        sh '''
                        sudo ssh -o StrictHostKeyChecking=no [email protected] "
                        jq '.outputs | {"kubeconfig-file"}' terraform.tfstate;
                        "
                        '''

                    }
                }
            } 
        }

`

Ошибка: `

jq: error: syntax error, unexpected '-', expecting '}' (Unix shell quoting issues?) at <top-level>, line 1:

`

terraform.tfstate `

{
"outputs": {
    "kubeconfig-file": {
      "value": "/home/chi/jenkins-terraform/config",
      "type": "string"
    },
    "master-node-ip": {
      "value": "x.x.x.x",
      "type": "string"
    },
    "master-node-vm-name": {
      "value": "v1",
      "type": "string"
    },
    "worker-node-ip": {
      "value": "x.x.x.x, x.x.x.x, x.x.x.x",
      "type": "string"
    },
    "worker-node-vm-names": {
      "value": "v2, v3, v4",
      "type": "string"
    }
  }
}

`

Я пытался \ избежать "-" и "{}", но ничего не получилось. Я хочу, чтобы jq выполнялся через сеанс ssh.

"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
1
0
101
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны избегать двойных кавычек внутри двойных кавычек:

sudo ssh -o StrictHostKeyChecking=no [email protected] "
jq '.outputs | {\"kubeconfig-file\"}' terraform.tfstate;
"

Возможно, обратную косую черту нужно экранировать:

sudo ssh -o StrictHostKeyChecking=no [email protected] "
jq '.outputs | {\\"kubeconfig-file\\"}' terraform.tfstate;
"

Не повезло! Тот же результат!

Kapil Yadav 11.12.2022 17:35

@KapilYadav, можете ли вы как-то включить отладочный вывод, какая именно команда выполняется? Не могли бы вы попробовать двойную обратную косую черту, то есть {\\"kubeconfig-file\\"}?

knittl 11.12.2022 17:39

Двойная обратная косая черта, кажется, работает. Спасибо! - @knittl

Kapil Yadav 11.12.2022 17:51

Другие вопросы по теме