Argumenty i opcje skryptów ($@, $#, getopts)
Nauczy się Pan/Pani przekazywać argumenty do skryptów i analizować opcje wiersza poleceń za pomocą zmiennych specjalnych oraz „getopts”.
Argumenty i opcje skryptów ($@, $#, getopts) to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Argumenty skryptu: dlaczego ich używać?
Czy używałeś kiedyś polecenia takiego jak ls -l lub cp file1 file2? -l, file1 i file2 to argumenty! Informują one polecenie, co ma zrobić lub na czym ma działać.
W skryptach Bash argumenty zwiększają elastyczność skryptów. Zamiast wpisywać wartości na stałe, skrypt może przyjmować dane bezpośrednio z wiersza poleceń podczas uruchamiania.
Dostęp do argumentów pozycyjnych
Podczas uruchamiania skryptu z argumentami Bash automatycznie przypisuje je do specjalnych zmiennych nazywanych parametrami pozycyjnymi.
- Pierwszy argument to
$1. - Drugi argument to
$2. - I tak dalej, aż do
$9.
W przypadku argumentów o numerach większych niż 9 należy użyć nawiasów klamrowych, na przykład ${10}, ${11} itd. Zmienne te przechowują wartości przekazane do skryptu.
Demonstracja: argumenty pozycyjne
Zobaczmy, jak uzyskać dostęp do tych argumentów w skrypcie. Zapisz ten skrypt jako greet.sh i uruchom go za pomocą ./greet.sh Alice Bob.
#!/bin/bash
echo "Hello, $1!"
echo "Welcome, $2."
echo "The third argument (if any) is: $3"`$0` i `$#`: informacje o skrypcie
Bash udostępnia jeszcze kilka specjalnych zmiennych zawierających informacje o samym skrypcie i jego argumentach:
$0: Przechowuje nazwę wykonywanego skryptu. Jest przydatna w komunikatach o błędach lub w logowaniu.$#: Ta zmienna zawiera łączną liczbę argumentów pozycyjnych przekazanych do skryptu.
Zmienne te pomagają tworzyć bardziej niezawodne i przyjazne dla użytkownika skrypty.
Demonstracja: `$0` i `$#`
Uruchom ten skrypt z różną liczbą argumentów, na przykład ./info.sh one two three lub po prostu ./info.sh.
#!/bin/bash
echo "Script name: $0"
echo "Number of arguments received: $#"`$@` a `$*`: wszystkie argumenty
Czasami trzeba odwołać się jednocześnie do wszystkich argumentów. Bash oferuje dwa sposoby:
$@: Rozwija się do oddzielnych argumentów. Po ujęciu w cudzysłowy ("$@") każdy argument pozostaje osobnym słowem, nawet jeśli zawiera spacje. Zwykle jest to preferowane rozwiązanie w pętlach.$*: Rozwija się do jednego ciągu zawierającego wszystkie argumenty. Po ujęciu w cudzysłowy ("$*") wszystkie argumenty są łączone w jedno słowo i rozdzielane pierwszym znakiemIFS(Internal Field Separator, zwykle spacją).
Podczas iterowania po argumentach zawsze używaj "$@", aby zachować spacje!
Demonstracja: iterowanie za pomocą `"$@"`
Ten skrypt pokazuje, jak "$@" prawidłowo obsługuje argumenty zawierające spacje. Uruchom go w ten sposób: ./loop_args.sh hello "world wide" web
#!/bin/bash
echo "Processing arguments with \"$@\":"
for arg in "$@"; do
echo " Argument: [$arg]"
done
echo "\nProcessing arguments with \"$*\":"
for arg in "$*"; do
echo " Argument: [$arg]"
doneOpcje: coś więcej niż argumenty pozycyjne
Argumenty pozycyjne świetnie sprawdzają się w prostych przypadkach, ale co zrobić, jeśli skrypt potrzebuje opcjonalnych przełączników lub nazwanych parametrów, takich jak -v oznaczające tryb szczegółowy albo -f filename?
W takich sytuacjach przydają się opcje wiersza poleceń. Zwiększają one elastyczność skryptów i ułatwiają ich obsługę, pozwalając użytkownikom określać ustawienia w dowolnej kolejności.
Bash udostępnia polecenie getopts przeznaczone specjalnie do analizowania tego typu opcji.
Składnia `getopts`: `optstring`
Podstawowa składnia polecenia getopts to: getopts optstring variable.
optstring: Ciąg znaków reprezentujących prawidłowe opcje. Jeśli opcja wymaga argumentu (tak jak-f filename), po znaku należy umieścić dwukropek (na przykładf:).variable: Nazwa zmiennej, w którejgetoptszapisze aktualnie przetwarzany znak opcji (na przykładopt).
getopts ustawia również OPTARG dla argumentów opcji oraz OPTIND dla indeksu następnego argumentu.
Demonstracja: podstawowe użycie `getopts`
Ten skrypt przetwarza opcje -v (tryb szczegółowy) i -f (plik). Spróbuj go uruchomić: ./options.sh -v -f mydata.txt -x lub ./options.sh -vf mydata.txt
#!/bin/bash
while getopts "vf:" opt; do
case $opt in
v)
echo "Verbose mode enabled."
;;
f)
echo "File specified: $OPTARG"
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
doneSzybki test: zmienne argumentów
Rozważ poniższy skrypt i sposób jego uruchomienia:
#!/bin/bash
echo "Script: $0"
echo "Count: $#"
for arg in "$@"; do
echo "Arg: $arg"
doneJeśli uruchomisz go za pomocą: ./myscript.sh "Hello World" 123
Jaki będzie wynik?
Podsumowanie: argumenty i opcje
Świetna praca! Wiesz już, jak znacznie zwiększyć wszechstronność skryptów Bash:
- Argumenty pozycyjne: Używaj
$1,$2itd., aby uzyskać bezpośredni dostęp do argumentów. - Specjalne zmienne:
$0przechowuje nazwę skryptu,$#liczbę argumentów, a"$@"umożliwia bezpieczne iterowanie po wszystkich argumentach. - Opcje wiersza poleceń: Używaj
getoptsdo analizowania nazwanych opcji (takich jak-v) i ich argumentów (-f filename), dzięki czemu skrypty stają się bardziej niezawodne i przyjazne dla użytkownika.
Ćwicz używanie tych elementów we własnych skryptach, aby tworzyć zaawansowane i elastyczne narzędzia wiersza poleceń!
Często zadawane pytania
Czy lekcja „Argumenty i opcje skryptów ($@, $#, getopts)” jest bezpłatna?
Tak — pełny tekst „Argumenty i opcje skryptów ($@, $#, getopts)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Argumenty i opcje skryptów ($@, $#, getopts)”?
Nauczy się Pan/Pani przekazywać argumenty do skryptów i analizować opcje wiersza poleceń za pomocą zmiennych specjalnych oraz „getopts”. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Argumenty i opcje skryptów ($@, $#, getopts)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Konstrukcje pętli (for, while)
- Funkcje w skryptach Bash
- Argumenty i opcje skryptów ($@, $#, getopts)
- Instrukcja case i dopasowywanie wzorców