在 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
我正在尝试使用 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