Базові змінні в Bash

Вступ до Bash Scripting

Alex Scriven

Data Scientist

Присвоєння змінних

Як і в інших мовах, змінні можна присвоювати через знак рівності.

var1="Moon"

Далі звертайтесь через позначення $.

echo $var1
Moon
Вступ до Bash Scripting

Присвоєння рядкових змінних

Назвіть змінну як зручно (але змістовно):

firstname='Cynthia'
lastname='Liu'

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

Обидві змінні виведено — чудово!

Вступ до Bash Scripting

Пропущене позначення $

Якщо пропустите $, це вже не змінна!

firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Вступ до Bash Scripting

(Не)присвоєння змінних

Bash не прощає пробіли під час створення змінних. Уникайте пробілів!

var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
Вступ до Bash Scripting

Одинарні, подвійні, зворотні лапки

У Bash різні лапки означають різне. І при створенні змінних, і при виведенні.

  • Одинарні лапки ('sometext') = оболонка сприймає вміст буквально
  • Подвійні лапки ("sometext") = буквально, окрім використання $ і зворотних лапок

Останній варіант створює «оболонку в оболонці», як нижче. Корисно для виклику програм командного рядка. Це робиться зворотними лапками.

  • Зворотні лапки (`sometext`) = оболонка виконує команду і записує STDOUT у змінну
Вступ до Bash Scripting

Різні способи створення змінних

Подивімося ефект різних способів створення змінних

now_var='NOW'

now_var_singlequote='$now_var' echo $now_var_singlequote
$now_var
now_var_doublequote="$now_var"
echo $now_var_doublequote
NOW
Вступ до Bash Scripting

Програма date

Програма date зручна для демонстрації зворотних лапок

Звичайний вивід цієї програми:

date
Mon  2 Dec 2019 14:07:10 AEDT
Вступ до Bash Scripting

Оболонка в оболонці

Скористаймося тепер «оболонкою в оболонці»:

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

Програму date викликано, вивід захоплено й вставлено в рядок з викликом echo.

Ми використали оболонку в оболонці!

Вступ до Bash Scripting

Дужки vs зворотні лапки

Є еквівалент позначення зворотних лапок:

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.

Обидва працюють однаково, але зворотні лапки — старіший підхід. Дужки частіше використовують у сучасних застосунках. (Див. http://mywiki.wooledge.org/BashFAQ/082)

Вступ до Bash Scripting

Давайте потренуємось!

Вступ до Bash Scripting

Preparing Video For Download...