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.