【问题标题】:Getting parse error while running below BASH script在 BASH 脚本下运行时出现解析错误
【发布时间】:2021-05-12 11:38:44
【问题描述】:

在 BASH 脚本下运行时出现解析错误,在执行 shell 时检查其在 -d '{ with -d '{ -- SC2016: Expressions don't expand in single quotes, use double quotes for that.

处的抛出错误

但是使用双引号又没有帮助,我在 -d 处使用了带有单引号的类似脚本,并且效果很好。任何帮助将非常感激。只是补充一下,我正在从这里进行外壳检查https://www.shellcheck.net/

#!/bin/bash
echo "Enter PAT Token"
read -r PAT

echo "Enter Organization name"
read -r OrganizationName

echo "Enter Project ID"
read -r projectId

echo "Enter Repo name"
read -r RepoName

echo "Enter Repo ID"
read -r RepoID

  "Pipeline=$(curl --write-out "%{http_code}\n" -X POST \
        -u  :"$PAT" "http://dev.azure.com/""${OrganizationName}""/""${projectId}""/_apis/build/definitions?api-version=5.0" \
        -H  "Accept: application/json" \
        -H  "Content-Type: application/json" \
        -d '{
                "name" : "TEST-PIPELINE";
                "repository" : {
                "url" : https://""${OrganizationName}""@dev.azure.com/""${OrganizationName}""/""${projectId}""/_git/""${RepoName}"";
                "defaultBranch" : "refs/heads/master";
                "id" : "'"$RepoID"'";
                "type" : "TfsGit";
                                };
        "process" : {
                "yamlFilename": "'"${RepoName}/azure-pipeline.yml"'";
                "type" : 2;
                };
                        "path": "\\";
                        "type" : "build";
                }' --output PipelineOutput.txt --silent)"

        echo "Output: $(Pipeline)"

【问题讨论】:

  • 这不是 json 的样子。就像完全。研究 json 语法。 "Pipeline= 现在是您分配变量的方式,$(Pipeline)" 这不是您引用变量的方式。研究一个很好的 shellintroduction,它将解释 shell 脚本的 basics - 命令替换和变量扩展。

标签: bash shell azure-devops-rest-api


【解决方案1】:

您复制的错误消息来自此行:

"url" : https://""${OrganizationName}""@dev.azure.com/""${OrganizationName}""/""${projectId}""/_git/""${RepoName}"";

它需要一些额外的单引号,类似于您在其他地方使用的:

"url" : https://"'"${OrganizationName}"'"@dev.azure.com/"'"${OrganizationName}"'"/"'"${projectId}"'"/_git/"'"${RepoName}"'";

【讨论】:

    最近更新 更多