Сценарий Azure DevOps Bash Проверка запроса на извлечение

Я хочу создать небольшой сценарий bash, который проверяет, запускается ли запрос на вытягивание из правильных ветвей, или завершается при ошибке, если это не так.

Это была моя последняя попытка / итерация перед тем, как я опубликовал этот вопрос:

if [[ -n $(System.PullRequest.TargetBranch) ]]&&[[ "$(System.PullRequest.TargetBranch)"!="refs/heads/master" ]];
  then
    echo "$(System.PullRequest.TargetBranch)"!="refs/heads/master"
    echo "Branch $(System.PullRequest.TargetBranch) is not master, proceed."
    exit 0
fi

if [ -n $(system.pullRequest.sourceBranch) ];
  then
    if [ "$(system.pullRequest.sourceBranch)"!="refs/heads/hotfixes/"* ]&&[ "$(system.pullRequest.sourceBranch)"!="refs/heads/develop" ];
      then
        echo "Only hotfixes and develop are allowed to be pulled to the master branch"
        exit 1
      else
        echo "$(system.pullRequest.sourceBranch) is allowed to be pulled to the master branch"
    fi
  else
    echo "variable does not exists"
fi

В настоящее время я тестирую / создаю этот сценарий и ожидаю выхода 1 в моем тестовом примере. Но я получаю следующий результат:

refs/heads/master!=refs/heads/master 
Branch refs/heads/master is not master, proceed.

Я предполагаю, что я делаю что-то не так с операторами сравнения строк (не говоря уже о том, что исправления запускаются с проверкой позже). Но я не могу понять, что делаю не так. Я пробовал несколько вариантов, некоторые дают другие ошибки. Я понятия не имею, куда двигаться дальше.

Как видно из вывода, две сравниваемые строки на самом деле совпадают. Так что я не уверен, в чем дело.

0
задан 26 September 2019 в 18:22
1 ответ

Вам нужны пробелы между переменными и оператором. И вам не нужно двойные скобки для этого сравнения.

Вместо

if [[ -n $(System.PullRequest.TargetBranch) ]]&&[[ "$(System.PullRequest.TargetBranch)"!="refs/heads/master" ]];

Попробуйте

target_branch=$(System.PullRequest.TargetBranch) # to simplify the next lines
if [ -n "$target_branch" ] && [ "$target_branch" != "refs/heads/master" ]; then 
# ...
1
ответ дан 4 December 2019 в 15:37

Теги

Похожие вопросы