我有一个 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 `]” 知道这意味着什么吗?
根据错误消息,
第 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 ]