Parametry pozycyjne w Bash

Słownik kwalifikacji INF.02 - Administracja i eksploatacja systemów komputerowych, urządzeń peryferyjnych i lokalnych sieci komputerowych

Parametry pozycyjne to wartości przekazane do skryptu powłoki Linux podczas jego uruchamiania. W skrypcie Bash można się do nich odwoływać za pomocą specjalnych zmiennych, np. $1, $2, $3.

Przykład uruchomienia skryptu:

./skrypt.sh ala ma kota dziś

W skrypcie wartości będą dostępne jako:

  • $0 - nazwa skryptu, np. ./skrypt.sh,
  • $1 - pierwszy argument, np. ala,
  • $2 - drugi argument, np. ma,
  • $3 - trzeci argument, np. kota,
  • $4 - czwarty argument, np. dziś.

Lista wszystkich argumentów

Do odwołania się do wszystkich argumentów służą głównie:

$@
$*

W pytaniach egzaminacyjnych za poprawną odpowiedź na „lista wszystkich wartości argumentów” najczęściej przyjmuje się $@.

Różnica między $@ i $*

Najważniejsza różnica ujawnia się po użyciu cudzysłowów:

"$@"

traktuje każdy argument osobno, zachowując ich granice, natomiast:

"$*"

łączy wszystkie argumenty w jeden ciąg tekstowy.

Dlatego w praktycznych skryptach bezpieczniej stosować "$@", szczególnie gdy argumenty mogą zawierać spacje.

Przykład

#!/bin/bash

echo "Liczba argumentów: $#"

for arg in "$@"; do
  echo "Argument: $arg"
done

Jeśli uruchomimy:

./skrypt.sh "Jan Kowalski" test 123

pętla poprawnie potraktuje Jan Kowalski jako jeden argument.