0Pricing
Linux Command Line & Bash Scripting Mastery · Lekcja

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 Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Linux Command Line & Bash Scripting Mastery 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 znakiem IFS (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]"
done

Opcje: 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ład f:).
  • variable: Nazwa zmiennej, w której getopts zapisze aktualnie przetwarzany znak opcji (na przykład opt).

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
done

Szybki 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"
done

Jeś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, $2 itd., aby uzyskać bezpośredni dostęp do argumentów.
  • Specjalne zmienne: $0 przechowuje nazwę skryptu, $# liczbę argumentów, a "$@" umożliwia bezpieczne iterowanie po wszystkich argumentach.
  • Opcje wiersza poleceń: Używaj getopts do 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 Linux Command Line & Bash Scripting Mastery, przejdź na CoddyKit PRO. Kurs Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery 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ąć Linux Command Line & Bash Scripting Mastery?

Nie wymagamy żadnego doświadczenia. Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery?

Tak. Każda lekcja Linux Command Line & Bash Scripting Mastery 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

  1. Konstrukcje pętli (for, while)
  2. Funkcje w skryptach Bash
  3. Argumenty i opcje skryptów ($@, $#, getopts)
  4. Instrukcja case i dopasowywanie wzorców
← Powrót do Linux Command Line & Bash Scripting Mastery