在 jenkinsfile 中使用命令 sh 的正确语法

right syntax using command sh in jenkinsfile

我正在尝试使用 jenkinksfile 删除具有相同 ID 的图像,我已经尝试过:

sh "docker images | grep 643975c526cf | awk '{print `` ':' ``}' | xargs docker rmi"

sh "docker images | grep 643975c526cf | awk '{print $1 ':' $2}' | xargs docker rmi"

sh "docker images | grep 643975c526cf | awk '{print  ':' }' | xargs docker rmi"

但是 linux 中 awk '{print ${1} ':' ${2}}' 的语法错误使用命令行工作正常但我不知道正确的语法在 sh 命令上。

试试下面的语法。

sh "docker images | grep 643975c526cf | awk '{ print  ":"  }' | xargs docker rmi"

最后,我找到了这个方法并且工作正常:

sh """#!/bin/bash
    docker images | grep 643975c526cf  | awk '{print  ":" }' | sort -u | xargs docker rmi -f
   """

Jenkins 管道中使用的下一个代码块(它也适用于共享库) 在我的例子中,我根据来自远程主机的应用程序名称获得了所有进程 ID。如果您需要从本地主机获取进程列表 - 仅使用 cmdFindPs

cmdSshConnect = "sshpass -p ${remPassword} ssh ${remLogin}@${remServer}"
cmdFindPs = 'ps aux | grep \'' + env.buildName +  '\' | awk \'{print }\''
cmdFillFindPs = cmdSshConnect + ' ' + cmdFindPs

//echo 'Command find = ' + cmdFillFindPs
runPs = sh(returnStdout: true, script: cmdFillFindPs)
//echo runPs.text