我在jenkins中配置了一个管道脚本。在一个阶段,我需要运行带有参数的perl脚本,例如:
pipeline{
agent any
stages {
stage('First Stage')
{
steps
{
dir ("path_to_script")
sh "#!/usr/bin/perl -w test.pl --arg ar1 --arg ar2 --arg ar3"
}
}
此代码对我没有帮助。如何执行脚本test.pl?
答案 0 :(得分:1)
我向shebang提供所有内容感觉有点奇怪。从本质上讲,你说的是文件其余部分的解释器是带有完整参数集的perl(然后它不会获得执行所提供的代码)。为什么我可以想象这仍然有效,我建议只拨打perl:
sh "/usr/bin/perl -w test.pl --arg ar1 --arg ar2 --arg ar3"
并没有引入shebang定义。
这只对我有意义,如果你提供一个perl脚本(然后_Michael J_s'由于多行引用而对我有意义:
sh """#!/usr/bin/perl
use strict;
use warnings;
print "Hello, World!\n";"""
答案 1 :(得分:0)
我知道这个线程已经有几年历史了,但是只是为了记录...
steps
{
dir ("path_to_script")
sh "#!/usr/bin/perl -w test.pl --arg ar1 --arg ar2 --arg ar3"
}
与cd不同,dir不是有效且持久的命令。而是,与声明性管道保持一致,这是一个块,例如:
dir ("path_to_script") {
sh "/usr/bin/perl -w ./test.pl --arg ar1"
}
我相信文档中的shebang是用于脚本是否内联的。为此,如果test.pl将shebang作为其第一行(#!/ usr / bin / perl -w),则将其减少为:
dir ("path_to_script") {
sh "./test.pl --arg ar1"
}