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.