gpt4 book ai didi

groovy escape 双引号 $

转载 作者:行者123 更新时间:2023-12-01 17:52:05 28 4
gpt4 key购买 nike

我在 Jenkins 管道中运行了这个 shell 脚本

def planResults = sh(returnStdout: true, script: "cd $it; PLAN=\$(terragrunt plan --terragrunt-source-update | landscape); echo "$PLAN"; CHANGES=$(echo "$PLAN" | tail -2); echo $CHANGES")

问题是当我尝试回显“$PLAN”变量时。

这是 groovy 推荐的解决方案,它在 PLAN 设置为\$(terragrunt 的位置附近工作,但是它不适用于双引号内的 $。我需要双引号才能使该命令正常工作。

solution: either escape a literal dollar sign "\$5" or bracket the value 
expression "${5}" @ line 34, column 148.
ce-update | landscape); echo "$PLAN"; CH

谢谢!

最佳答案

对于双引号字符串,Groovy 会首先对字符串进行插值。

因为itPLANCHANGES是shell的运行时变量,而不是Groovy运行时的变量。插值期间,Groovy 无法从 Groovy 变量堆栈中找到响应值来替换 $it/PLAN/CHANGS

因此,如果您在情况下使用双引号,则需要转义所有 $:

script: "cd \$it; PLAN=\$(terragrunt plan --terragrunt-source-update | landscape); 
echo \$PLAN; CHANGES=\$(echo \$PLAN | tail -2); echo \$CHANGES"

或者使用不支持插值的单引号:

script: 'cd $it; PLAN=$(terragrunt plan --terragrunt-source-update | landscape); 
echo $PLAN; CHANGES=$(echo $PLAN | tail -2); echo $CHANGES'

有关 Groovy 字符串的更多详细信息,请访问 here

关于groovy escape 双引号 $,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51659231/

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