Введение в Bash-скриптинг
Alex Scriven
Data Scientist
Как и в других языках, переменные присваиваются с помощью знака равенства.
var1="Moon"
Для обращения к переменной используется нотация $.
echo $var1
Moon
Назовите переменную как угодно (но осмысленно!):
firstname='Cynthia' lastname='Liu'echo "Hi there" $firstname $lastname
Hi there Cynthia Liu
Обе переменные выведены — отлично!
Если пропустить нотацию $ — это уже не переменная!
firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Bash очень чувствителен к пробелам при объявлении переменных. Будьте осторожны!
var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
В Bash тип кавычек влияет на поведение — как при создании переменных, так и при выводе.
'sometext') = оболочка интерпретирует содержимое буквально"sometext") = буквальная интерпретация, кроме $ и обратных кавычек Последний способ создаёт «оболочку внутри оболочки» — это описано ниже. Удобно для вызова программ командной строки. Используются обратные кавычки.
Посмотрим, как разные типы кавычек влияют на создание переменных.
now_var='NOW'now_var_singlequote='$now_var' echo $now_var_singlequote
$now_var
now_var_doublequote="$now_var"
echo $now_var_doublequote
NOW
Программа Date поможет наглядно продемонстрировать работу обратных кавычек.
Обычный вывод этой программы:
date
Mon 2 Dec 2019 14:07:10 AEDT
Теперь используем оболочку внутри оболочки:
rightnow_doublequote="The date is `date`."
echo $rightnow_doublequote
The date is Mon 2 Dec 2019 14:13:35 AEDT.
Программа date была вызвана, её вывод захвачен и встроен в строку при вызове echo.
Мы использовали оболочку внутри оболочки!
Существует альтернатива нотации с обратными кавычками:
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-скриптинг