Ricordo di aver visto da qualche parte uno bash
script che utilizzava case
e shift
di scorrere l'elenco dei parametri posizionali, analizzare i flag e le opzioni con argomenti quando li incontra e li rimuove dopo l'analisi per lasciare solo gli argomenti nudi, che vengono successivamente elaborati dal resto del script.
Ad esempio, analizzando la riga di comando cp -R file1 -t /mybackup file2 -f
, dovrebbe prima scorrere i parametri, riconoscere che l'utente ha richiesto di scendere nelle directory da -R
, specificare la destinazione da -t /mybackup
e forzare la copia da -f
, e rimuovere quelli dall'elenco dei parametri, lasciando il programma da elaborare file1 file2
come gli argomenti rimanenti.
Ma non riesco a ricordare / scoprire qualunque sceneggiatura ho visto ogni volta. Vorrei solo essere in grado di farlo. Ho cercato su Google vari siti e ho aggiunto un elenco di pagine pertinenti che ho esaminato.
Una domanda su questo sito Web ha chiesto specificamente "opzioni indipendenti dall'ordine", ma sia la risposta singola che la risposta alla domanda a cui è stata fornita non considerano casi come quelli sopra in cui le opzioni sono mescolate con argomenti normali, che presumo fossero le motivo per cui la persona menziona specificamente le opzioni indipendenti dall'ordine .
Dato che bash
il built-in getopts
sembra fermarsi al primo argomento non opzionale, non sembra essere una soluzione sufficiente. Questo è il motivo per cui la pagina di Wooledge BashFAQ (vedi sotto) spiega come riorganizzare gli argomenti. Ma vorrei evitare di creare più array nel caso in cui l'elenco degli argomenti sia piuttosto lungo.
Dal momento shift
che non supporta la rimozione di singoli argomenti dal centro dell'elenco dei parametri, non sono sicuro di quale sia un modo semplice per implementare ciò che sto chiedendo.
Mi piacerebbe sapere se qualcuno ha qualche soluzione per rimuovere gli argomenti dal centro dell'elenco dei parametri senza creare un array completamente nuovo.
Pagine che ho già visto:
- http://mywiki.wooledge.org/ComplexOptionParsing#Rearranging_arguments
- http://mywiki.wooledge.org/BashFAQ/035
- Utilizzo di getopts nello script della shell bash per ottenere opzioni della riga di comando lunghe e brevi
- http://wiki.bash-hackers.org/scripting/posparams
- http://wiki.bash-hackers.org/howto/getopts_tutorial
- caso argomento bash per args in $ @
- Qual è il modo canonico per implementare le opzioni indipendenti dall'ordine negli script bash?
- Come gestisco le opzioni in uno script di shell?