Основные переменные в Bash

Введение в Bash-скриптинг

Alex Scriven

Data Scientist

Присваивание переменных

Как и в других языках, переменные присваиваются с помощью знака равенства.

var1="Moon"

Для обращения к переменной используется нотация $.

echo $var1
Moon
Введение в Bash-скриптинг

Присваивание строковых переменных

Назовите переменную как угодно (но осмысленно!):

firstname='Cynthia'
lastname='Liu'

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

Обе переменные выведены — отлично!

Введение в Bash-скриптинг

Пропущенная нотация $

Если пропустить нотацию $ — это уже не переменная!

firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Введение в Bash-скриптинг

Неправильное присваивание переменных

Bash очень чувствителен к пробелам при объявлении переменных. Будьте осторожны!

var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
Введение в Bash-скриптинг

Одинарные, двойные кавычки и обратные кавычки

В Bash тип кавычек влияет на поведение — как при создании переменных, так и при выводе.

  • Одинарные кавычки ('sometext') = оболочка интерпретирует содержимое буквально
  • Двойные кавычки ("sometext") = буквальная интерпретация, кроме $ и обратных кавычек

Последний способ создаёт «оболочку внутри оболочки» — это описано ниже. Удобно для вызова программ командной строки. Используются обратные кавычки.

  • Обратные кавычки (`sometext`) = оболочка выполняет команду и записывает STDOUT в переменную
Введение в Bash-скриптинг

Разные способы создания переменных

Посмотрим, как разные типы кавычек влияют на создание переменных.

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-скриптинг

Программа date

Программа Date поможет наглядно продемонстрировать работу обратных кавычек.

Обычный вывод этой программы:

date
Mon  2 Dec 2019 14:07:10 AEDT
Введение в Bash-скриптинг

Оболочка внутри оболочки

Теперь используем оболочку внутри оболочки:

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

Программа date была вызвана, её вывод захвачен и встроен в строку при вызове echo.

Мы использовали оболочку внутри оболочки!

Введение в Bash-скриптинг

Скобки и обратные кавычки

Существует альтернатива нотации с обратными кавычками:

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-скриптинг

Давайте потренируемся!

Введение в Bash-скриптинг

Preparing Video For Download...