bash if azure devops 任务中的语句未执行
bash if statement inside the azure devops task is not executing
我试图在现有存储帐户中自动创建 azure 文件系统和目录(如果它们尚不存在)。为此,我正在使用 Azure devops 管道任务。在 Azuredevops 管道内的“bash”和“azurecli”任务中尝试了以下内联脚本。但是它没有检查容器中是否存在 blob 或文件,只是简单地传递了任务而没有给出任何错误,但它也没有创建任何资源。
这里所有这些参数都被正确定义为 yaml 中的运行参数。我正在使用的 bash 脚本似乎有些问题
- task: AzureCLI@2
displayName: 'create the filesystem ${{parameters.fsname}} & parent directory ${{parameters.parentdirectory}} if not exists'
inputs:
azureSubscription: ${{parameters.subscription}}
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
existing_fs=$(az storage fs exists -n ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login)|cut -d : -f 2 | sed 's/.//'
existing_directory=$(az storage fs directory exists -n ${{parameters.parentdirectory}} -f ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login)|cut -d : -f 2 | sed 's/.//'
if [ "$existing_fs" = false ]; then
az storage fs create -n ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login
fi
if [ "$existing_directory" = false ]; then
az storage fs directory create -n ${{parameters.parentdirectory}} -f ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login
fi
我已经在我的环境中进行了测试。
azure devops 任务中的 if 语句未执行,因为变量 existing_fs 和 existing_directory 与 false 不同。
您可以使用 powershell 脚本代替 bash 脚本。
而内联脚本可以如下:
$existing_fs=(az storage fs exists -n ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login | ConvertFrom-Json).exists
$existing_directory=(az storage fs directory exists -n ${{parameters.parentdirectory}} -f ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login | ConvertFrom-Json).exists
if (!$existing_fs)
az storage fs create -n ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login
if (!$existing_directory)
az storage fs directory create -n ${{parameters.parentdirectory}} -f ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login
我试图在现有存储帐户中自动创建 azure 文件系统和目录(如果它们尚不存在)。为此,我正在使用 Azure devops 管道任务。在 Azuredevops 管道内的“bash”和“azurecli”任务中尝试了以下内联脚本。但是它没有检查容器中是否存在 blob 或文件,只是简单地传递了任务而没有给出任何错误,但它也没有创建任何资源。 这里所有这些参数都被正确定义为 yaml 中的运行参数。我正在使用的 bash 脚本似乎有些问题
- task: AzureCLI@2
displayName: 'create the filesystem ${{parameters.fsname}} & parent directory ${{parameters.parentdirectory}} if not exists'
inputs:
azureSubscription: ${{parameters.subscription}}
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
existing_fs=$(az storage fs exists -n ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login)|cut -d : -f 2 | sed 's/.//'
existing_directory=$(az storage fs directory exists -n ${{parameters.parentdirectory}} -f ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login)|cut -d : -f 2 | sed 's/.//'
if [ "$existing_fs" = false ]; then
az storage fs create -n ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login
fi
if [ "$existing_directory" = false ]; then
az storage fs directory create -n ${{parameters.parentdirectory}} -f ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login
fi
我已经在我的环境中进行了测试。
azure devops 任务中的 if 语句未执行,因为变量 existing_fs 和 existing_directory 与 false 不同。
您可以使用 powershell 脚本代替 bash 脚本。
而内联脚本可以如下:
$existing_fs=(az storage fs exists -n ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login | ConvertFrom-Json).exists
$existing_directory=(az storage fs directory exists -n ${{parameters.parentdirectory}} -f ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login | ConvertFrom-Json).exists
if (!$existing_fs)
az storage fs create -n ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login
if (!$existing_directory)
az storage fs directory create -n ${{parameters.parentdirectory}} -f ${{parameters.fsname}} --account-name ${{parameters.storagename}} --auth-mode login