I think the easiest way is to surround your command using '''
(3 x single quotation mark).
I've created example to illustrate you how it may work.
First I created two PVCs
(block-pvc
,block-pvc2
) that should be removed by the script.
# kubectl get pvc -A
NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
default block-pvc Pending 9m45s
test block-pvc2 Pending 9m42s
Then I added command to my pipeline:
sh '''
./kubectl describe -A pvc | grep -E "^Name:.*$|^Namespace:.*$|^Used By:.*$" | grep -B 2 "<none>" | grep -E "^Name:.*$|^Namespace:.*$" | cut -f2 -d: | paste -d " " - - | xargs -n2 bash -c './kubectl -n ${1} delete pvc ${0}'
'''
As a result in the Console Output of this build we can see that it works as expected:
persistentvolumeclaim "block-pvc" deleted
persistentvolumeclaim "block-pvc2" deleted
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…