Книга: Искусство программирования на языке сценариев командной оболочки

Пример 5-1. Вывод "причудливых" переменных

Пример 5-1. Вывод "причудливых" переменных

#!/bin/bash

# weirdvars.sh: Вывод "причудливых" переменных

var="'(]{}$""

echo $var # '(]{}$"

echo "$var" # '(]{}$" Никаких различий.

echo

IFS=''

echo $var # '(] {}$" символ-разделитель преобразован в пробел.

echo "$var" # '(]{}$"

# Примеры выше предоставлены S.C.

exit 0

Одиночные кавычки (' ') схожи по своему действию с двойными кавычками, только не допускают обращение к переменным, поскольку специальный символ "$" внутри одинарных кавычек воспринимается как обычный символ. Внутри одиночных кавычек, любой специальный символ, за исключением ', интерпретируется как простой символ. Одиночные кавычки ("строгие, или полные кавычки") следует рассматривать как более строгий вариант чем двойные кавычки ("нестрогие, или неполные кавычки").


Поскольку внутри одиночных кавычек даже экранирующий () символ воспринимается как обычный символ, попытка вывести одиночную кавычку внутри строки, ограниченной одинарными кавычками, не даст желаемого результата.

echo "Why can't I write 's between single quotes"

echo

# Обходной метод.

echo 'Why can'''t I write '"'"'s between single quotes'

# |-------| |----------| |-----------------------|

# Три строки, ограниченных одинарными кавычками,

# и экранированные одиночные кавычки между ними.

# Пример любезно предоставлен Stephane Chazelas.

Экранирование -- это способ заключения в кавычки одиночного символа. Экранирующий (escape) символ () сообщает интерпретатору, что следующий за ним символ должен восприниматься как обычный символ.


С отдельными командами и утилитами, такими как echo и sed, экранирующий символ может применяться для получения обратного эффекта - когда обычные символы при экранировании приобретают специальное значение.

Специальное назначение некоторых экранированных символов

используемых совместно с echo и sed

перевод строки (новая строка)

r

перевод каретки

t

табуляция

v

вертикальная табуляция

забой (backspace)

a

"звонок" (сигнал)

xx

ASCII-символ с кодом 0xx в восьмеричном виде)

Оглавление книги


Генерация: 1.190. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз