При создании встроенной команды bash, подобной этой, в DevOps Azure:
checksum="$(cksum file.txt)"
В конечном итоге cksum file.txt
станет обязательным параметром.По какой-то причине это поведение не согласовано, поэтому иногда я настраиваю конвейеры сборки, которые хорошо работают со встроенными сценариями Bash, но неизбежно я столкнусь с этой проблемой и не смогу ее исправить.
Iдаже попытался установить параметр cksum file.txt
на cksum file.txt
, но заменил пробел закодированной строкой: %20
.Это становится cksum%20file.txt
, что не является допустимой командой в bash.
Вот полный сценарий:
yarnCacheFilename="$(cksum yarn.lock).yarnCache.docker.tgz"
wget "https://example.azureedge.net/yarn-cache/$yarnCacheFilename"
if [ -f "$yarnCacheFilename" ]; then
mkdir node_modules
tar -xzvf "$yarnCacheFilename"
else
yarn install --production
fi
Достаточно просто.Это код, который я могу запустить в любом терминале bash
.К сожалению, Azure DevOps добавляет параметр в группу задач:
bash command">
Тот факт, что этот параметр существует, означает, что Azure DevOps препятствует выполнению моего файла bashправильно и строковая замена самой важной части.
Как мне обойти эту проблему?