Saya memiliki skrip bash berikut tetapi saya tidak dapat menggunakan perintah "kctl" yang saya tetapkan jika saya menyebutnya dengan "get pods". Apakah saya mungkin harus menambahkan placeholder di belakang perintah di fungsi kctl() atau lebih?

    #!/bin/bash
    KCTL=$(which kubectl)
    KUBECONFIG=$1

    kctl() {
      $KCTL --kubeconfig=$KUBECONFIG
    }

    kctl get pods

Untuk beberapa alasan saya selalu mendapatkan kembali bantuan kubectl dan bukan daftar pod di namespace default.

Terima kasih sebelumnya

0
sunwave121 12 Mei 2021, 11:55

1 menjawab

Jawaban Terbaik

Di sini ktcl adalah fungsi tersendiri, sehingga memiliki parameternya sendiri. Ketika Anda menggunakannya pada akhirnya Anda memberikan parameter tambahan untuk itu tetapi kemudian dalam fungsi Anda tidak melakukan apa pun dengannya.

Jika niat Anda adalah menambahkan argumen ke perintah di dalam fungsi, Anda harus menulisnya seperti ini:

kctl() {
      $KCTL --kubeconfig=$KUBECONFIG "$@" 
}

Perhatikan bagaimana fungsi tidak melihat argumen skrip, karena dibayangi oleh argumennya sendiri.

2
paxdiablo 12 Mei 2021, 09:11