ฉันได้สร้างโค้ดต่อไปนี้ ดังนั้นคุณสามารถใช้มันเป็นตัวห่อหุ้ม คุณสามารถตั้งชื่อสคริปต์อะไรก็ได้ที่คุณต้องการ ตัวอย่างเช่น exclud_ns_removal
#!/usr/bin/env ทุบตี
ตาย ()
{
เสียงสะท้อน "$@" 1>&2
ทางออก 1
}
การใช้งาน ()
{
echo "การใช้งาน: $0 [-h] [-v namespace_to_ignore] " 1>&2
ทางออก 0
}
อินอาร์เรย์ ()
{
ท้องถิ่น n=$1 ชั่วโมง
กะ
สำหรับชั่วโมงใน "$@"
ทำ
[[ $n = "$h" ]] && กลับ
เสร็จแล้ว
กลับ 1
}
ในขณะที่รับตัวเลือก ":v:h" เลือก; ทำ
กรณี $ เลือกใช้
ชม)
การใช้งาน
;;
โวลต์)
กรณี $OPTARG ใน
'' | *[0-9]*)
ตาย "ไม่อนุญาตให้ใช้ตัวเลข $OPTARG"
;;
*)
val=$OPTARG
;;
เอสแซค
;;
:)
ตาย "อาร์กิวเมนต์ที่จำเป็นในการ -$OPTARG"
;;
*)
ตาย "สวิตช์ไม่ถูกต้อง -$OPTARG"
;;
เอสแซค
เสร็จแล้ว
กะ $((OPTIND - 1))
ในขณะที่ IFS='/' อ่าน -r _ ns; ทำ
a+=("$ns")
เสร็จสิ้น < <(kubectl รับเนมสเปซ --no-headers -o ชื่อ)
ถ้า inarray "$val" "${a[@]}"; แล้ว
ยกเลิกการตั้งค่า 'a'
{
ในขณะที่ IFS='/' อ่าน -r _ ns; ทำ
a+=("$ns")
สำหรับฉันใน "${!a[@]}"
ทำ
ถ้า [[ ${a[i]} == $val ]]; แล้ว
ยกเลิกการตั้งค่า 'a[i]'
ไฟ
เสร็จแล้ว
เสร็จแล้ว
} < <(kubectl รับเนมสเปซ --no-headers -o ชื่อ)
printf '%s\n\n' "ไม่รวม ... $val"
สำหรับเนมสเปซใน "${a[@]}"
ทำ
printf 'กำลังลบ ... %s\n' "$namespace"
เสร็จแล้ว
อื่น
ตาย "ไม่พบเนมสเปซ"
ไฟ
ทำให้สคริปต์ทำงานได้:
chmod u+x exclud_ns_removal
เรียกใช้ดังต่อไปนี้:
./exclude_ns_removal -v ระบบ kube
ผลลัพธ์จะเป็นดังนี้:
ไม่รวม ... ระบบคุเบะ
กำลังลบ ... ระบบแอป
กำลังลบ ... db-system
หากผลลัพธ์ดูดี คุณควรแก้ไขบรรทัดนี้
printf 'กำลังลบ ... %s\n' "$namespace"
ถึง
kubectl ลบเนมสเปซ "$namespace"