Základní proměnné v Bash

Úvod do Bash skriptování

Alex Scriven

Data Scientist

Přiřazování proměnných

Stejně jako v jiných jazycích lze proměnné přiřazovat pomocí znaku rovná se.

var1="Moon"

Odkaz na proměnnou se provádí zápisem $.

echo $var1
Moon
Úvod do Bash skriptování

Přiřazování řetězcových proměnných

Pojmenujte proměnnou podle potřeby (smysluplně!):

firstname='Cynthia'
lastname='Liu'

echo "Hi there" $firstname $lastname
Hi there Cynthia Liu

Obě proměnné byly vráceny – výborně!

Úvod do Bash skriptování

Chybějící zápis $

Pokud vynecháte zápis $, není to proměnná!

firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Úvod do Bash skriptování

(Chybné) přiřazování proměnných

Bash není tolerantní k mezerám při vytváření proměnných. Pozor na přidání mezer!

var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
Úvod do Bash skriptování

Jednoduché, dvojité uvozovky a zpětné apostrofy

V Bash mají různé typy uvozovek různý význam – při vytváření i výpisu proměnných.

  • Jednoduché uvozovky ('sometext') = shell interpretuje obsah doslova
  • Dvojité uvozovky ("sometext") = shell interpretuje doslova, s výjimkou $ a zpětných apostrofů

Posledním způsobem se vytvoří „shell uvnitř shellu", popsaný níže. Užitečné pro volání programů příkazové řádky. Používají se zpětné apostrofy.

  • Zpětné apostrofy (`sometext`) = shell spustí příkaz a zachytí STDOUT do proměnné
Úvod do Bash skriptování

Různé způsoby vytváření proměnných

Podívejme se na efekt různých způsobů vytváření proměnných

now_var='NOW'

now_var_singlequote='$now_var' echo $now_var_singlequote
$now_var
now_var_doublequote="$now_var"
echo $now_var_doublequote
NOW
Úvod do Bash skriptování

Program date

Program Date slouží k demonstraci zpětných apostrofů

Normální výstup tohoto programu:

date
Mon  2 Dec 2019 14:07:10 AEDT
Úvod do Bash skriptování

Shell uvnitř shellu

Použijme nyní shell uvnitř shellu:

rightnow_doublequote="The date is `date`."
echo $rightnow_doublequote
The date is Mon 2 Dec 2019 14:13:35 AEDT.

Program date byl zavolán, výstup zachycen a vložen přímo do volání echo.

Použili jsme shell uvnitř shellu!

Úvod do Bash skriptování

Závorky vs. zpětné apostrofy

Existuje ekvivalent k zápisu se zpětnými apostrofy:

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.

Oba způsoby fungují stejně, zpětné apostrofy jsou však starší. Závorky se používají více v moderních aplikacích. (Viz http://mywiki.wooledge.org/BashFAQ/082)

Úvod do Bash skriptování

Pojďme procvičovat!

Úvod do Bash skriptování

Preparing Video For Download...