jenkins 管道内的 awk 脚本
awk script inside jenkins pipeline
我正在尝试在 jenkinsfile 中执行以下脚本
awk 'NR==FNR{new=new [=10=] ORS; next} /^}]$/{printf "}],\n%s", new} 1' output2 ${WORKSPACE}/${REPO}/file1 >> output2
此脚本在 linux 命令提示符中运行良好,但在尝试 运行 inside jenkins file.I 时出错 file.I 在下面尝试
sh """
awk 'NR==FNR{new=new [=11=] ORS; next} /^}]$/{printf "}],\n%s", new} 1' output2 ${WORKSPACE}/${REPO}/file1 >> output2
"""
但是语法错误
您需要注意转义单引号或双引号、反斜杠和美元符号。在这里,我已经逃脱了一切:
sh """
awk \'NR==FNR{new=new $0 ORS; next} /^}]$/{printf \"}],\n%s\", new} 1\' output2 ${WORKSPACE}/${REPO}/file1 >> output2
"""
也许您实际上不想转义 ${WORKSPACE} 或 ${REPO},如果这些是您希望由 groovy 代替的管道环境变量,而不是 sh。也许您不需要转义三重“””多字符串中的单引号。但您肯定需要转义 \n
.
中的双引号和反斜杠
我正在尝试在 jenkinsfile 中执行以下脚本
awk 'NR==FNR{new=new [=10=] ORS; next} /^}]$/{printf "}],\n%s", new} 1' output2 ${WORKSPACE}/${REPO}/file1 >> output2
此脚本在 linux 命令提示符中运行良好,但在尝试 运行 inside jenkins file.I 时出错 file.I 在下面尝试
sh """
awk 'NR==FNR{new=new [=11=] ORS; next} /^}]$/{printf "}],\n%s", new} 1' output2 ${WORKSPACE}/${REPO}/file1 >> output2
"""
但是语法错误
您需要注意转义单引号或双引号、反斜杠和美元符号。在这里,我已经逃脱了一切:
sh """
awk \'NR==FNR{new=new $0 ORS; next} /^}]$/{printf \"}],\n%s\", new} 1\' output2 ${WORKSPACE}/${REPO}/file1 >> output2
"""
也许您实际上不想转义 ${WORKSPACE} 或 ${REPO},如果这些是您希望由 groovy 代替的管道环境变量,而不是 sh。也许您不需要转义三重“””多字符串中的单引号。但您肯定需要转义 \n
.