你如何在Cakev1中传递空参数?

根据升级文档./build.sh arg=,从 v1.0 开始不再可能。确实,这会产生:

Error: Expected an option value.

但是它也不适用于arg=''. 我可以不使用它并依赖默认值,但是从我的 Azure DevOps 管道中很难做到这一点,它读起来就像- script: ./build.sh --arg='$(arg1)'arg1 是在别处定义的变量。

问题是arg1我的 DevOps 管道中的变量是在外部定义的,可能为空,也可能不为空。

我能想到的最好的方法是至少传入一个空格./build.sh --arg='$(arg) '(注意末尾的空格)并始终检查string.IsNullOrWhiteSpace并始终进行修剪,但这似乎很hacky。

是否有更干净的解决方案来从命令行传递可能为空的变量?如果不是,我如何重写我的 Azure DevOps YML 以在参数为空时不传递参数?

回答

TL; 博士; 如果值可以为空/空,请使用 (空格)代替=

./build.sh --arg '$(arg1)'
./build.sh --arg '$(arg1)'

Cake v1.0 支持在--argumentName和之间使用空格value作为=符号的替代。例如:

dotnet cake empty-args.cake --arg1 --arg2
dotnet cake empty-args.cake --arg1 valueA --arg2
dotnet cake empty-args.cake --arg1 --arg2 valueB
dotnet cake empty-args.cake --arg1 valueA --arg2 valueB

使用如下所示的示例 Cake 脚本,它将输出以下内容:

dotnet cake empty-args.cake --arg1 --arg2
arg1: [NULL]
arg2: [NULL]

dotnet cake empty-args.cake --arg1 --arg2
arg1: [NULL]
arg2: [NULL]

dotnet cake empty-args.cake --arg1 valueA --arg2
arg1: valueA
arg2: [NULL]

dotnet cake empty-args.cake --arg1 --arg2 valueB
arg1: [NULL]
arg2: valueB

dotnet cake empty-args.cake --arg1 valueA --arg2 valueB
arg1: valueA
arg2: valueB


以上是你如何在Cakev1中传递空参数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>