Wprowadzenie do skryptów Bash
Alex Scriven
Data Scientist
Podobnie jak w innych językach, zmienne przypisuje się za pomocą znaku równości.
var1="Moon"
Następnie odwołuje się do nich za pomocą notacji $.
echo $var1
Moon
Nadaj zmiennej dowolną (sensowną!) nazwę:
firstname='Cynthia' lastname='Liu'echo "Hi there" $firstname $lastname
Hi there Cynthia Liu
Obie zmienne zostały zwrócone — świetnie!
Bez notacji $ — to nie jest zmienna!
firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Bash jest bardzo rygorystyczny w kwestii spacji przy tworzeniu zmiennych. Należy ich unikać!
var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
W Bash różne cudzysłowy mają różne znaczenie — zarówno przy tworzeniu zmiennych, jak i podczas wyświetlania.
'sometext') = powłoka interpretuje zawartość dosłownie"sometext") = powłoka interpretuje dosłownie, z wyjątkiem $ i odwróconych apostrofów Ostatni sposób tworzy „powłokę w powłoce" — przydatny do wywoływania programów wiersza poleceń. Służą do tego odwrócone apostrofy.
Porównajmy efekty różnych sposobów tworzenia zmiennych
now_var='NOW'now_var_singlequote='$now_var' echo $now_var_singlequote
$now_var
now_var_doublequote="$now_var"
echo $now_var_doublequote
NOW
Program Date przyda się do demonstracji odwróconych apostrofów
Standardowe wyjście tego programu:
date
Mon 2 Dec 2019 14:07:10 AEDT
Użyjmy teraz powłoki w powłoce:
rightnow_doublequote="The date is `date`."
echo $rightnow_doublequote
The date is Mon 2 Dec 2019 14:13:35 AEDT.
Program date został wywołany, a jego wynik przechwycony i wstawiony inline do polecenia echo.
Użyliśmy powłoki w powłoce!
Istnieje odpowiednik notacji z odwróconymi apostrofami:
rightnow_doublequote="The date is `date`."
rightnow_parentheses="The date is $(date)."
echo $rightnow_doublequote
echo $rightnow_parentheses
The date is Mon 2 Dec 2019 14:54:34 AEDT.
The date is Mon 2 Dec 2019 14:54:34 AEDT.
Obie metody działają tak samo, jednak odwrócone apostrofy to starsza składnia. Nawiasy są częściej stosowane we współczesnych aplikacjach. (Zob. http://mywiki.wooledge.org/BashFAQ/082)
Wprowadzenie do skryptów Bash