Uzyskanie kłótni z flagami w Bash
Aby uzyskać argumenty z flagami w Bash, możesz użyć polecenia „getopts”. Polecenie „getopts” to wbudowana funkcja w BASH, której można użyć do analizowania opcji i argumentów wiersza poleceń. To wymaga Trzy argumenty: ciąg opcji, zmienna do przechowywania bieżącej opcji, i nazwa zmiennej do przechowywania pozostałych argumentów. Oto przykład:
#!/bin/bash
podczas getopts ": x: y:" opt; Do
sprawa $ opt in
X)
arg1 = "$ optarg"
;;
y)
arg2 = "$ optarg"
;;
\?)
echo „Nieprawidłowe: -$ optarg”> i 2
;;
:)
Echo „Opcja -$ optarg wymaga argumentu."> I 2
;;
esac
zrobione
Shift $ ((optind-1))
Echo „Argument 1: $ arg1”
Echo „Argument 2: $ arg2”
Tutaj polecenie „getopts” służy do analizowania opcji wiersza poleceń „-x” i „-y”. Znak „:” po każdej opcji wskazuje, że opcja wymaga argumentu, a zmienna „Opt” przechowuje bieżącą opcję, a zmienne „arg1” i „arg2” przechowują odpowiednie argumenty.
Instrukcja „sprawa” służy do obsługi każdej opcji, więc jeśli opcja to „x”, argument jest przechowywany w „Arg1”. Jeśli opcją jest „Y”, argument jest przechowywany w „Arg2”.Komunikat o błędzie jest wyświetlany, gdy podana jest nieprawidłowa opcja, a także gdy nie podano żadnego argumentu, nawet jeśli opcja wymaga jednego.
Optarg służy do przechowywania wartości argumentu przekazywanego z opcjami -x lub -y, podczas gdy Optind -1 służy do przesunięcia parametrów pozycyjnych w celu wykluczenia opcji i ich argumentów, pozostawiając tylko argumenty nieopisyjne.
Po parsowaniu opcji polecenie „Shift” służy do usunięcia opcji z listy argumentów. Zapewnia to, że pozostałe argumenty są przechowywane we właściwej zmiennej.Aby użyć skryptu z flagami, możesz uruchomić skrypt z opcjami i argumentami flagowymi, takimi jak ten:
./- -
Wniosek
Używając flag do przekazywania opcjonalnych argumentów do bashów może sprawić, że skrypty są bardziej elastyczne i potężne, a przy poleceniu „getopts” możesz łatwo przeanalizować argumenty i opcje wiersza poleceń. Postępując zgodnie z przykładem w tym artykule, możesz zaimplementować flagi we własnych skryptach bash i z łatwością je obsługiwać.