Misalkan saya memiliki program grafis bernama app
. Contoh penggunaan:app -t 'first tab' -t 'second tab'
membuka dua 'tab' dalam program itu.
Pertanyaannya adalah:bagaimana saya bisa menjalankan perintah (yaitu app
.) ) dari dalam bash
script jika jumlah argumen dapat bervariasi?
Pertimbangkan ini:
#!/bin/bash
tabs=(
'first tab'
'second tab'
)
# Open the app (starting with some tabs).
app # ... How to get `app -t 'first tab' -t 'second tab'`?
Saya ingin skrip di atas memiliki efek yang setara dengan app -t 'first tab' -t 'second tab'
. Bagaimana skrip bash seperti itu dapat ditulis?
Sunting:perhatikan bahwa pertanyaannya menanyakan tentang menyusun argumen baris perintah dengan cepat menggunakan array argumen.
Jawaban yang Diterima:
Memberikan argumen dari array itu mudah, "${array[@]}"
diperluas ke entri array sebagai kata (argumen) yang berbeda. Kita hanya perlu menambahkan -t
bendera. Untuk melakukannya, kita dapat mengulang larik pertama, dan membangun larik lain untuk daftar lengkap argumen, menambahkan -t
bendera saat kita pergi:
#!/bin/bash
tabs=("first tab" "second tab")
args=()
for t in "${tabs[@]}" ; do
args+=(-t "$t")
done
app "${args[@]}"
Gunakan "[email protected]"
bukannya "${tabs[@]}"
untuk mengambil argumen baris perintah dari skrip alih-alih daftar kode keras.