Cytowanie zmiennych

Znaki cytowania służą do usuwania interpretacji znaków specjalnych (takich jak $\n ! i innych) przez powłokę.

Wyróżniamy nastepujące znaki cytowania:

Cudzysłów (ang. double quote)

  • " " - Między cudzysłowami umieszcza się tekst, wartości zmiennych zawierające spacje.

Podpowiedź

Cudzysłowy zachowują znaczenie specjalne trzech znaków:

  • $ – wskazuje na nazwę zmiennej, umożliwiając podstawienie jej wartości
  • \ – znak maskujący
  • ` ` – odwrotny apostrof, umozliwia zacytowanie polecenia

Przykład

#!/bin/bash

x=2
echo "Wartość zmiennej x to $x"    #wydrukuje tekst "Wartość zmiennej x to 2"
echo -ne "Usłyszysz dzwonek\a"
echo "Polecenie date pokaże: `date`"

apostrof (ang. single quote)

  • ' ' – Wszystko co ujęte w znaki apostrofu traktowane jest jak łańcuch tekstowy, apostrof wyłącza interpretowanie wszystkich znaków specjalnych (są one traktowane jak zwykłe znaki).

Przykład

#!/bin/bash

echo '$USER'   #nie wypisze twojego loginu

odwrotny apostrof (ang. backquote)

  • ` ` – umożliwia zacytowanie polecenia, bardzo przydatne jeśli chce się podstawić pod zmienną wynik jakiegoś polecenia np:

Przykład

#!/bin/bash
x=`ls -la $PWD`
echo $x                            #pokaże rezultat polecenia

Alternatywny zapis, który ma takie samo działanie wygląda tak:

#!/bin/bash
echo $(ls -la $PWD)

backslash, czyli znak maskujący

  • \ – By na ekranie pojawił się napis $HOME, możesz napisać go w apostrofach ale równie dobrze możesz zamaskować pierwszy jego znak, tak jak to pokazane jest w przykładzie.

Przykład

echo "$HOME"                       #wydrukuje /home/ja
echo \$HOME                        #i jest napis $HOME
echo '$HOME'                       #i jest napis $HOME

Postawienie znaku backslash \ na końcu wiersza informuje powłokę, że dana linijka jest kontynuowana w następnym wierszu (normalnie następny wiersz to następna instrukcja). Dzięki temu nie musimy pisać długich wierszy, które przeszkadzają w wygodnym edytowaniu i oglądaniu pliku (nie wszystkie edytory obsługują automatyczne zawijanie).

here documents

  • Here documents (dokumenty miejscowe) – Jest to rodzaj przekierowania, które pozwala część treści skryptu traktować jako standardowe wejście.

Składnia:

<<ograniczenie
    here-document
ograniczenie

Przykład

#!/bin/sh
cat << _EOF
Ten tekst zostanie
wyświetlony na ekranie
ogranicznikiem jest _EOF
_EOF

Po uruchomieniu powyższego skryptu otrzymamy na ekranie wszystko to co zawarliśmy między _EOF. Ten sposób może być używany do wyświetlenia większej ilości informacji na ekran bez konieczności wpisywania polecenia echo w każdej linii.

Podpowiedź

Ogranicznik końcowy musi znaleźć się sam w jednej linii. Ogranicznikiem moze być dowolne wyrażenie, ale najczęściej stosowane jest _EOF.