我是一个Jenkins初学者。
为什么此命令有效?
sed -i -E s/'image: '(.*)${stack_name}-${service_name}:.*\$/'image: '\1${stack_name}-${service_name}:${version}/g
为什么同一个命令在包含在Jenkinsfile中时不起作用?
sh "sed -i -E s/'image: '(.*)${stack_name}-${service_name}:.*\$/'image: '\1${stack_name}-${service_name}:${version}/g"
错误为:
/opt/jenkins_data/workspace/secuview-front_master-Z2ADTSIGTSEJOG3UYRU4FPDUF5VZMB3SMQLEOUD46TUZG4POWKYQ@tmp/durable-a484faaf/script.sh: line 2: syntax error near unexpected token `('
1条答案
按热度按时间lnxxn5zx1#
Jenkinsfiles本质上是Apache Groovy脚本,因此Groovy的字符串转义规则适用。当你有斜杠时,它们需要被转义(例如
\
-〉\\
),当你使用双引号时,使用${}
的文字实际上是由脚本解释的,而不是传递给shell步骤。请尝试以下操作: