Bash Pagina 65
Sari la navigare
Sari la căutare
Getopts 2
Finalizarea procesării opțiunilor: Orice cuvânt care nu începe cu o liniuță (-) va încheia procesarea opțiunii. Astfel, orice argument care apare după opțiuni trebuie analizat manual. De exemplu:
-x -y fisier1 fisier2 fisier3
- Semnul --: O opțiune -- este folosită pentru a indica finalul opțiunilor. Orice argument care urmează după -- va fi considerat un argument normal, nu o opțiune.
- Utilizarea OPTARG: Argumentele pentru opțiuni vor fi stocate în variabila OPTARG. Aceasta permite accesarea valorilor asociate cu opțiunile care necesită un argument.
- Utilizarea OPTIND: Variabila OPTIND deține indexul următorului argument care urmează să fie procesat. Aceasta este utilă pentru a urmări starea procesării opțiunilor, mai ales când sunt amestecate opțiunile și argumentele.
Exemplu practic
#!/bin/bash # Inițializare a variabilelor verbose=0 filename="" # Procesarea opțiunilor cu getopts while getopts "vf:" opt; do case $opt in v) verbose=1 ;; f) filename="$OPTARG" ;; \?) echo "Opțiune invalidă: -$OPTARG" >&2 exit 1 ;; esac done # Îndepărtarea opțiunilor procesate shift $((OPTIND - 1)) # Verificarea argumentelor rămase if [ -z "$filename" ]; then echo "Utilizare: $0 -f <fișier> [-v] [arg1 arg2 ...]" exit 1 fi # Acțiune bazată pe opțiuni if [ $verbose -eq 1 ]; then echo "Mod verbose activat." echo "Se va procesa fișierul: $filename" fi # Procesarea argumentelor rămase for arg in "$@"; do echo "Argument suplimentar: $arg" done
Cum funcționează scriptul
Opțiunile:
- -v: Activează modul verbose.
- -f <fișier>: Așteaptă un argument care specifică un fișier.
Procesarea argumentelor:
- getopts citește argumentele și le procesează.
- Dacă opțiunea -f este specificată, argumentul asociat este stocat în variabila filename.
- Orice alt argument după opțiuni este gestionat cu shift pentru a permite procesarea ulterioară.
Ieșire:
Scriptul va informa utilizatorul despre opțiunile selectate și va afișa argumentele suplimentare.