..

在 Jenkinsfile 的 sh 中执行 awk

在 Jenkinsfile 中如果要执行 awk :

sh("ls -al | awk '{print $3}'")

这么写可能会报错, 因为 $3 被 groovy 认为是要替换字符传, 当前上下文中并没有 3 这个变量,所以会报错。

解决这个问题的方式如下:

sh """
  ls -al | awk '{print \$3}'
"""

2020年01月15日更新

有同学的docker用户名中包含了 $ 符号,也可以用相同的方法来解决

sh """
echo ${PASSWD} | docker -u \$xxx --password-stdin 
"""

参考文档: