如何使用 spn 执行 azcli 任务?

问题描述 投票:0回答:1

我有一个 devops 管道,我尝试使用 azcli 任务来查看 blob,但我认为它没有成功登录,我尝试使用服务主体登录,但我认为它不起作用。有什么想法有什么问题吗?

- task: AzureCLI@2
  inputs:
    azureSubScription:'$(subName)'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az login --service-principal -u $servicePrincipalId -p $servicePrincipalKey --tenant $tenantId
      if [ $? -eq 0]; then
        echo 'Azure login success'
      else
        echo 'Azure login failure'
        exit $?
      fi
      az storage blob list --account-name $(accountName) --container-name $(containerName)
    addSpnToEnvironment: true

我知道 cli 任务应该自动登录,我添加了登录名和 if 作为检查发生了什么的一种方式,现在它总是显示 azure 登录失败,这解释了为什么我一直从存储 blob 列表中得不到结果日志。 在日志中的登录失败输出上方,显示“/home/vsts/work/_temp/azureclitasksript1704664334724.sh: line 2: [:missing `]” 知道这意味着什么吗?

azure azure-devops yaml azure-pipelines azure-pipelines-yaml
1个回答
0
投票

根据错误消息,

第 2 行:[:缺少 `]'

bash 脚本中的第 2 行 (

if [ $? -eq 0]; then
) 有语法错误。您需要通过在条件后添加空格来更正以下行:

if [ $? -eq 0 ]; then

在 bash 脚本中使用

if
语句时,正确的语法应如下所示。

if [ condition ]

您需要确保括号 (

condition
) 之间的
[ ]
前后存在空格。如果您错过了方括号之间的任何空格,bash 将报告有关“
missing ]
”的错误,就像您得到的错误一样。

比如下面这样就不行并报错:

if [$x==0]

if [ $x==0]

if [$x==0 ]

© www.soinside.com 2019 - 2024. All rights reserved.