niedziela,
Bash i znak $
Znak $
w bash ma wiele znaczeń, a ich znajomość jest fundamentalna dla efektywnego pisania skryptów i pracy z powłoką. Umożliwia on dostęp do danych systemowych i użytkownika, manipulowanie nimi oraz kontrolowanie zachowania skryptów.
Główne zastosowania znaku $
- Dostęp do wartości zmiennej –
$
jest używany do uzyskiwania wartości zmiennej. Na przykład, jeśli masz zmienną o nazwieusername
, używasz$username
do wyświetlenia jej wartości. Przykład:echo $username
wydrukuje wartość zmiennejusername
. - Wykonanie poleceń (Command Substitution) – użycie
$()
pozwala na wykonanie polecenia i zastąpienie całego wyrażenia jego wynikiem. Na przykład,current_date=$(date)
przypisuje wynik poleceniadate
do zmiennejcurrent_date
. - Rozwinięcie parametrów – bash umożliwia zaawansowane rozwijanie parametrów przy użyciu różnych form, jak
${param}
,${param:-word}
,${param:=word}
,${param:?word}
, i wiele innych. Te konstrukcje pozwalają na manipulowanie wartościami zmiennych w bardziej skomplikowany sposób, na przykład ustawianie domyślnych wartości lub wyświetlanie błędów, gdy zmienna nie jest ustawiona. - Arytmetyka – w kontekście operacji arytmetycznych,
$((expression))
pozwala na obliczenie wyrażenia arytmetycznego i zwrócenie jego wartości. Na przykład,echo $((2 + 2))
wydrukuje4
. - Dostęp do parametrów pozycyjnych –
$1
,$2
,$3
, ...,$N
są używane do dostępu do argumentów przekazanych do skryptu lub funkcji.$1
reprezentuje pierwszy argument,$2
drugi, i tak dalej. - Zmienne specjalne –
$#
zawiera liczbę argumentów pozycyjnych,$@
i$*
reprezentują wszystkie argumenty pozycyjne,$$
zawiera PID bieżącej powłoki,$?
zawiera status wyjścia ostatnio wykonanego polecenia,$0
zawiera nazwę bieżącego skryptu.
Przykłady
Każdy z przykładów demonstruje konkretną funkcjonalność znaku '$' w powłoce bash, od prostego dostępu do wartości zmiennych, przez zaawansowane rozwijanie parametrów, po operacje arytmetyczne i wykorzystanie specjalnych zmiennych. Użycie tych technik pozwala na tworzenie skryptów, które są elastyczne, potężne i dobrze dostosowane do potrzeb użytkownika.
Dostęp do wartości zmiennej
username="user123"
echo "Nazwa użytkownika: $username"
Wykonanie poleceń (command substitution)
current_date=$(date)
echo "Aktualna data: $current_date"
Rozwinięcie parametrów
# Ustawienie domyślnej wartości, jeśli zmienna nie istnieje
echo "Witaj, ${username:-gość}"
# Ustawienie wartości i przypisanie, jeśli zmienna nie istnieje
echo "Twoje miejsce: ${location:=Nieznane}"
# Wyświetlenie błędu, jeśli zmienna nie istnieje
echo "ID użytkownika: ${user_id:?"nie zdefiniowano"}"
Arytmetyka
a=5
b=2
result=$((a + b))
echo "Wynik: $result"
Dostęp do parametrów pozycyjnych
# Przykładowy skrypt: ./script.sh arg1 arg2
echo "Pierwszy argument: $1"
echo "Drugi argument: $2"
Specjalne zmienne
echo "Liczba argumentów: $#"
echo "Wszystkie argumenty: $@"
echo "PID powłoki: $$"
echo "Status wyjścia ostatniego polecenia: $?"
echo "Nazwa skryptu: $0"