Служебные символы, используемые в текстах сценариев.
Комментарии. Строки, начинающиеся с символа #
(за исключением комбинации #!) — являются комментариями.
# Эта строка -- комментарий.
Комментарии могут располагаться и в конце строки с исполняемым кодом.
echo "Далее следует комментарий." # Это комментарий.
Комментариям могут предшествовать пробелы (пробел, табуляция).
# Перед комментарием стоит символ табуляции.
#
в операторе echo не воспринимается как начало комментария. Более того, он может использоваться в операциях подстановки параметров и в константных числовых выражениях.
echo "Символ # не означает начало комментария." echo 'Символ # не означает начало комментария.' echo Символ \# не означает начало комментария. echo А здесь символ # означает начало комментария. echo ${PATH#*:} # Подстановка -- не комментарий. echo $(( 2#101011 )) # База системы счисления -- не комментарий. # Спасибо, S.C.
Кавычки " ' и \ экранируют действие символа #
.
В операциях поиска по шаблону символ #
так же не воспринимается как начало комментария.
Разделитель команд. [Точка-с-запятой] Позволяет записывать две и более команд в одной строке.
echo hello; echo there if [ -x "$filename" ]; then # Обратите внимание: "if" И "then" разделены точкой с запятой. # Почему? echo "Файл $filename найден."; cp $filename $filename.bak else echo "Файл $filename не найден."; touch $filename fi; echo "Конец."
Следует отметить, что символ »;» иногда так же как и # необходимо экранировать.
Ограничитель в операторе выбора case. [Двойная-точка-с-запятой]
case "$variable" in abc) echo "$variable = abc" ;; xyz) echo "$variable = xyz" ;; esac
команда «точка». Эквивалент команды source (см. Пример 11-19). Это встроенная команда bash.
«точка» может являться частью имени файла. Если имя файла начинается с точки, то это «скрытый» файл, т.е. команда ls при обычных условиях его не отображает.
bash$ touch .hidden-file bash$ ls -l total 10 -rw-r--r-- 1 bozo 4034 Jul 18 22:04 data1.addressbook -rw-r--r-- 1 bozo 4602 May 25 13:58 data1.addressbook.bak -rw-r--r-- 1 bozo 877 Dec 17 2000 employment.addressbook
bash$ ls -al total 14 drwxrwxr-x 2 bozo bozo 1024 Aug 29 20:54 ./ drwx------ 52 bozo bozo 3072 Aug 29 20:51 ../ -rw-r--r-- 1 bozo bozo 4034 Jul 18 22:04 data1.addressbook -rw-r--r-- 1 bozo bozo 4602 May 25 13:58 data1.addressbook.bak -rw-r--r-- 1 bozo bozo 877 Dec 17 2000 employment.addressbook -rw-rw-r-- 1 bozo bozo 0 Aug 29 20:54 .hidden-file
Если подразумевается имя каталога, то одна точка означает текущий каталог и две точки — каталог уровнем выше, или родительский каталог.
bash$ pwd /home/bozo/projects bash$ cd . bash$ pwd /home/bozo/projects bash$ cd .. bash$ pwd /home/bozo/
Символ точка довольно часто используется для обозначения каталога назначения в операциях копирования/перемещения файлов.
bash$ cp /home/bozo/current_work/junk/* .
Символ «точка» в операциях поиска. При выполнении поиска по шаблону, в регулярных выражениях, символ «точка» обозначает одиночный символ.
Двойные кавычки. В строке "STRING", ограниченной двойными кавычками не выполняется интерпретация большинства служебных символов, которые могут находиться в строке. см. Глава 5.
Одинарные кавычки. [Одинарные кавычки] 'STRING' экранирует все служебные символы в строке STRING. Это более строгая форма экранирования. Смотрите так же Глава 5.
Запятая. Оператор запятая используется для вычисления серии арифметических выражений. Вычисляются все выражения, но возвращается результат последнего выражения.
let "t2 = ((a = 9, 15 / 3))" # Присваивает значение переменной "a" и вычисляет "t2".