gpt4 book ai didi

azure-devops - Azure DevOps 为内联 bash 脚本中的操作创建变量

转载 作者:行者123 更新时间:2023-12-03 20:29:26 26 4
gpt4 key购买 nike

在 Azure DevOps 中创建这样的内联 bash 命令时:

checksum="$(cksum file.txt)"

我会看到 cksum file.txt作为必需参数。无论出于何种原因,这种行为并不一致,因此有时我已经设置了可以与内联 Bash 脚本一起正常工作的构建管道,但不可避免地,我会遇到这个问题并且无法修复它。

我什至尝试设置 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 正在向任务组添加一个参数:

Azure DevOps adding parameter for inline <code>bash</code> command

该参数存在的事实意味着 Azure DevOps 阻止了我的 bash 文件正确执行并替换了最关键的部分。

我如何解决这个问题?

最佳答案

您可以使用命令替换,因此将 $() 替换为两边的反勾号 `。

https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html有关命令替换的更多信息。

checksum="`cksum file.txt`"

完整脚本示例
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

关于azure-devops - Azure DevOps 为内联 bash 脚本中的操作创建变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52850592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com