Спецсимволы в bash
Далее перечислены символы и синтаксические конструкции, имеющее особое значение в bash. Для ввода спецсимволов как они есть используют кавычки или спецсимвол \ отменяющий специальное значение следующего символа
\ Экранирование. Отменяет специальное значение следующего символа
\\ Символ «\»
# Комментарий, не работает в кавычках и в некоторых подстановках переменных и преобразовании основания чисел
echo «Это #не комментарий»
echo ‘Это # не комментарий’
echo Это \# не комментарий
echo Это # Вот комментарий.
echo $ #Специальная переменная
echo $(( 2#101011 )) #Преобразование системы счисления в арифметической подстановке.
; Разделитель команд в строке
echo hello; echo world
;; Разделитель альтернатив в операторе case
case «$VARiable» in
abc) echo «$VARiable = abc» ;;
xyz) echo «$VARiable = xyz» ;;
esac
. Аналог команды source (#include в С++). Выполняет скрипт в текущем интерпретаторе.
. myconf
«..» Двойные кавычки, отменяют действие спецсимволов кроме $ `..` и \
‘. ‘ Апострофы, отменяют действие всех спецсимволов в том числе и \, по этому нельзя включить апостроф в строку ограниченную апострофами
: Нулевая команда, всегда возвращает нулевой код ответа. В сочетании с перенаправлением «>» создает файл, или обнуляет существующий. В сочетании с перенаправлением «>>» создает файл, или изменяет время модификации существующего
:> data.xxx # File “data.xxx” now empty.
(можно и без двоеточия)
Шаблоны в именах файлов. Если подходящие имена находятся, то они подставляются в командную строку как отдельные аргументы (возможно с пробелами внутри). Если имена не находятся, то шаблон остается как есть.
* Шаблон заменяющий любую последовательность символов
? Шаблон заменяющий ровно один символ
[xyz] Шаблон заменяющий один из перечисленных символов
Подстановка одного из вариантов в шаблон. В скобках не должно быть неэкранированных пробелов
grep Linux file*. # Ищет слово “Linux” в файлах вида “fileA.txt”, “file2.txt”, “fileR.html”, “file-87.htm”, etc.
$ Подстановка значения переменной, арифметического выражения или стандартного вывода программы. Если значение содержит пробелы, то при подстановке оно разбивается на отдельные аргументы.
$A содержимое переменной A
$$ PID процесса
$? Код возврата из последней выполненной программы или функции, а также код возврата самого скрипта
$((2*2)) подстановка результата вычисления арифметического выражения
$(cmd) подстановка стандартного вывода программы
`. ` тоже, что и $(. ) – подстановка стандартного вывода программы
Пример: A=EE; echo $A $(echo QQ) $((7+5))
Результат: EE QQ 12
Ошибка: $A=ZZ
Результат: bash: EE=ZZ: command not found
(. ) Группировка команд
(A=hello; echo $A)
Для выполнения группы в скобках запускается новый интерпретатор
A=123
(A=321)
echo A = $A # A = 123
# «A» внутри скобок – локальная переменная.
(. ) Создание массива ( только в bash версии > 2)
Array=(element1 element2 element3)
[] Элемент массива ( только в bash версии > 2)
Array[1]=slot_1
echo $
— подстановка чисел от 1 до 10
— подстановка символов от «c» до «n»
<. >Создание безымянной функции, удобно для перенаправления ввода/вывода нескольких команд в один файл. В отличие от настоящей функции видимости переменных не изменяется.
PACK=mysql
echo
echo «Archive Listing:»
rpm -qpl $ # Список фалов в пакете rpm
echo
rpm -i —test $ # Проверка, установлен ли пакет.
> > «$.txt» #И весь вывод в один файл.
[. ] Встроенная функция test для вычисления логических выражений
((. )) Арифметическая подстановка, вычисляет арифметическое выражение в стиле языка Си внутри скобок
& — запуск программы в фоновом режиме
bash$ sleep 10 &
[1] 850
[1]+ Done sleep 10