Podstawowe zmienne w Bash

Wprowadzenie do skryptów Bash

Alex Scriven

Data Scientist

Przypisywanie zmiennych

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
Wprowadzenie do skryptów Bash

Przypisywanie zmiennych tekstowych

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!

Wprowadzenie do skryptów Bash

Brak notacji $

Bez notacji $ — to nie jest zmienna!

firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Wprowadzenie do skryptów Bash

(Nie)poprawne przypisywanie zmiennych

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
Wprowadzenie do skryptów Bash

Apostrofy, cudzysłowy i odwrócone apostrofy

W Bash różne cudzysłowy mają różne znaczenie — zarówno przy tworzeniu zmiennych, jak i podczas wyświetlania.

  • Apostrofy ('sometext') = powłoka interpretuje zawartość dosłownie
  • Cudzysłowy ("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.

  • Odwrócone apostrofy (`sometext`) = powłoka uruchamia polecenie i przechwytuje STDOUT do zmiennej
Wprowadzenie do skryptów Bash

Różne sposoby tworzenia zmiennych

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
Wprowadzenie do skryptów Bash

Program date

Program Date przyda się do demonstracji odwróconych apostrofów

Standardowe wyjście tego programu:

date
Mon  2 Dec 2019 14:07:10 AEDT
Wprowadzenie do skryptów Bash

Powłoka w powłoce

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!

Wprowadzenie do skryptów Bash

Nawiasy a odwrócone apostrofy

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

Czas na ćwiczenia!

Wprowadzenie do skryptów Bash

Preparing Video For Download...