Saya ingat pernah melihat di suatu tempat bash
skrip menggunakan case
dan shift
berjalan melalui daftar parameter posisi, mengurai flag dan opsi dengan argumen ketika bertemu mereka, dan menghapusnya setelah parsing hanya meninggalkan argumen kosong, yang kemudian diproses oleh sisa dari naskah.
Misalnya, dalam mem-parsing baris perintah cp -R file1 -t /mybackup file2 -f
, pertama-tama ia akan berjalan melalui parameter, mengenali bahwa pengguna telah meminta untuk turun ke direktori dengan -R
, menentukan target dengan -t /mybackup
dan untuk memaksa menyalin -f
, dan menghapus yang dari daftar parameter, meninggalkan program untuk diproses file1 file2
sebagai argumen yang tersisa.
Tapi sepertinya saya tidak bisa mengingat / mencari tahu naskah apa pun yang saya lihat kapan saja. Saya hanya ingin bisa melakukan itu. Saya telah googling di berbagai situs dan menambahkan daftar halaman yang relevan yang saya periksa.
Sebuah pertanyaan di situs web ini secara khusus bertanya tentang "opsi tidak tergantung pesanan" tetapi baik jawaban tunggal maupun jawaban pertanyaan yang ditiru tidak mempertimbangkan kasus-kasus seperti di atas di mana opsi dicampur dengan argumen normal, yang saya anggap sebagai alasan bagi orang tersebut untuk secara spesifik menyebutkan opsi pesanan-independen .
Karena bash
built-in getopts
tampaknya berhenti pada argumen non-opsi pertama, sepertinya tidak cukup sebagai solusi. Inilah sebabnya mengapa halaman Wooledge BashFAQ (lihat di bawah) menjelaskan cara mengatur ulang argumen. Tetapi saya ingin menghindari membuat banyak array jika daftar argumennya cukup panjang.
Karena shift
tidak mendukung memunculkan argumen individual di bagian tengah daftar parameter, saya tidak yakin apa cara langsung untuk mengimplementasikan apa yang saya minta.
Saya ingin mendengar jika ada yang punya solusi untuk menghapus argumen dari tengah daftar parameter tanpa membuat array baru.
Halaman yang sudah saya lihat:
- http://mywiki.wooledge.org/ComplexOptionParsing#Rearranging_arguments
- http://mywiki.wooledge.org/BashFAQ/035
- Menggunakan getop dalam skrip bash shell untuk mendapatkan opsi baris perintah yang panjang dan pendek
- http://wiki.bash-hackers.org/scripting/posparams
- http://wiki.bash-hackers.org/howto/getopts_tutorial
- bash argumen case untuk args dalam $ @
- Apa cara kanonik untuk menerapkan opsi independen pesanan dalam skrip bash?
- Bagaimana cara menangani sakelar dalam skrip shell?