我试图使用jenkinks文件删除具有相同ID的图像,我尝试过:
sh "docker images | grep 643975c526cf | awk '{print `$1` ':' `$2`}' | xargs docker rmi"
sh "docker images | grep 643975c526cf | awk '{print \$1 ':' \$2}' | xargs docker rmi"
sh "docker images | grep 643975c526cf | awk '{print ${1} ':' ${2}}' | xargs docker rmi"
但是awk'{print $ {1}':'$ {2}}'的语法错误,使用命令行工作正常,但我不知道sh命令上正确的syntex。
答案 0 :(得分:1)
尝试以下语法。
sh "docker images | grep 643975c526cf | awk '{ print $1 ":" $2 }' | xargs docker rmi"
答案 1 :(得分:0)
最后,我发现这种方式并且工作正常:
sh """#!/bin/bash
docker images | grep 643975c526cf | awk '{print $1 ":" $2}' | sort -u | xargs docker rmi -f
"""
答案 2 :(得分:0)
Jenkins管道中使用的下一个代码块(对于共享库也是如此) 就我而言,我根据远程主机上的应用程序名称获得了所有进程ID。如果需要从本地主机获取进程列表,请仅使用 cmdFindPs
cmdSshConnect = "sshpass -p ${remPassword} ssh ${remLogin}@${remServer}"
cmdFindPs = 'ps aux | grep \'' + env.buildName + '\' | awk \'{print $2}\''
cmdFillFindPs = cmdSshConnect + ' ' + cmdFindPs
//echo 'Command find = ' + cmdFillFindPs
runPs = sh(returnStdout: true, script: cmdFillFindPs)
//echo runPs.text