Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使用grep和tr with pipe作为jenkins文件中的bash命令?_Linux_Bash_Jenkins_Groovy_Grep - Fatal编程技术网

Linux 如何使用grep和tr with pipe作为jenkins文件中的bash命令?

Linux 如何使用grep和tr with pipe作为jenkins文件中的bash命令?,linux,bash,jenkins,groovy,grep,Linux,Bash,Jenkins,Groovy,Grep,我使用一个带tr的grep命令从我当前目录中的文件访问一个版本。 grep命令可以工作,但不能作为变量在Jenkinsfile的上下文中工作 ID Name version: 0.0.2 different_version: 0.0.2 different_version: 0.0.3 我有这个: grepVersion='${grep -we "^version:" myconfig.yaml | tr -d "

我使用一个带tr的grep命令从我当前目录中的文件访问一个版本。 grep命令可以工作,但不能作为变量在Jenkinsfile的上下文中工作

ID
Name
version: 0.0.2



different_version: 0.0.2
    
    
different_version: 0.0.3

我有这个:

            grepVersion='${grep -we "^version:" myconfig.yaml | tr -d "version:[:blank:]"}'         
我想要这个:

myPath='something_"${grepVersion}"'
因此:

    echo "{$myPath}"
output: something_0.0.2
如果尝试了很多,如果有人能帮我,那就太好了

我的Jenkins文件如下所示:

pipeline {
    stages {
        stage('Build') {
            steps {
                script {
                    
                    echo "build something"
                }
            }
            
        }
        
        stage('Deploy'){
            steps{
                script {
                    
                    #grep version from file 

                    grepVersion='${grep -we "^version:" myconfig.yaml | tr -d "version:[:blank:]"}'                 
        
                    #access archivePath 
                    archivePath="${WORKSPACE}/archives/${env.JOB_NAME}_"${grepVersion}".mtar"
                    
                    #deploy something with arhivePath
                    sh 'XX deploy "${archivePath}" -f'
                }
            }
        }
    }
}
此命令工作并访问正确的版本:

grep -we "^version:" myconfig.yaml |tr -d "version:[:blank:]"
我的路径中有以下文件,我想在其中访问版本:0.0.2作为0.0.2将其连接到我的archivePath变量

ID
Name
version: 0.0.2



different_version: 0.0.2
    
    
different_version: 0.0.3

以下命令适用于bashshell,可以访问正确的版本:0.0.2

grep -we "^version:" myconfig.yaml |tr -d "version:[:blank:]"
但它不能用于Jenkins文件和groovy上下文。 如果您尝试使用以下命令访问0.0.2,将其用作bash变量:

这里的“^”产生了一个问题:

grepVersion=${grep -we "^version:" myconfig.yaml |tr -d "version:[:blank:]"}
grepVersion="${grep -we '^version:' myconfig.yaml |tr -d 'version:[:blank:]'"'
由于双引号,这里的命令无法解析:

grepVersion=${grep -we "^version:" myconfig.yaml |tr -d "version:[:blank:]"}
grepVersion="${grep -we '^version:' myconfig.yaml |tr -d 'version:[:blank:]'"'

等等,我还没有找到解决办法


已经谢谢你的帮助了。

非常感谢,你们都是对的

以下命令适用于我:

grepVersion=sh 'sed -n s/^version:[[:blank:]]*//p mta.yaml'

tr-d'version'
将删除每个
e
i
n
o
r
s
v
字符。这几乎肯定不是你想要的。您正在查找sed-n的//^version:[[:blank:][]*//p'myconfig.yaml?您还需要将整个grep命令包装在一个sh调用中。