Чтение онлайн

на главную

Жанры

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

Купер Мендель

Шрифт:

# вывод отсутствует.

echo; echo

exit 0

Еще один пример использования конструкции $' ' вы найдете в Пример 34-1.

\"

кавычки

echo "Привет" # Привет

echo "Он сказал: \"Привет\"." # Он сказал: "Привет".

\$

символ доллара (если за комбинацией символов \$ следует имя переменной, то она

не будет разыменована)

echo "\$variable01" # выведет $variable01

\\

обратный слэш

echo "\\" # выведет \

Поведение символа \ сильно зависит от того экранирован ли он, ограничен ли кавычками или находится внутри конструкции подстановки команды или во вложенном документе.

# Простое экранирование и кавычки

echo \z # z

echo \\z # \z

echo '\z' # \z

echo '\\z' # \\z

echo "\z" # \z

echo "\\z" # \z

# Подстановка команды

echo `echo \z` # z

echo `echo \\z` # z

echo `echo \\\z` # \z

echo `echo \\\\z` # \z

echo `echo \\\\\\z` # \z

echo `echo \\\\\\\z` # \\z

echo `echo "\z"` # \z

echo `echo "\\z"` # \z

# Встроенный документ

cat <<EOF

\z

EOF # \z

cat <<EOF

\\z

EOF # \z

# Эти примеры предоставил Stephane Chazelas.

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

variable=\

echo "$variable"

# Не работает - дает сообщение об ошибке:

# test.sh: : command not found

# В "чистом" виде экранирующий (escape) символ не может быть записан в переменную.

#

# Фактически, в данном примере, происходит экранирование символа перевода строки

#+ в результате получается такая команда: variable=echo "$variable"

#+

ошибочное присваивание

variable=\

23skidoo

echo "$variable" # 23skidoo

# Здесь все в порядке, поскольку вторая строка

#+ является нормальным, с точки зрения присваивания, выражением.

variable=\

# \^ За escape-символом следует пробел

echo "$variable" # пробел

variable=\\

echo "$variable" # \

variable=\\\

echo "$variable"

# Не работает - сообщение об ошибке:

# test.sh: \: command not found

#

# Первый escape-символ экранирует второй, а третий оказывается неэкранированным,

#+ результат тот же, что и в первом примере.

variable=\\\\

echo "$variable" # \\

# Второй и четвертый escape-символы экранированы.

# Это нормально.

Экранирование пробелов предотвращает разбиение списка аргументов командной строки на отдельные аргументы.

file_list="/bin/cat /bin/gzip /bin/more /usr/bin/less /usr/bin/emacs-20.7"

# Список файлов как аргумент(ы) командной строки.

# Добавить два файла в список и вывести список.

ls -l /usr/X11R6/bin/xsetroot /sbin/dump $file_list

echo "-------------------------------------------------------------------------"

# Что произойдет, если экранировать пробелы в списке?

ls -l /usr/X11R6/bin/xsetroot\ /sbin/dump\ $file_list

# Ошибка: первые три файла будут "слиты" воедино

# и переданы команде 'ls -l' как один аргумент

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

Кроме того, escape-символ позволяет писать многострочные команды. Обычно, каждая команда занимает одну строку, но escape-символ позволяет экранировать символ перевода строки, в результате чего одна команда может занимать несколько строк.

(cd /source/directory && tar cf - . ) | \

Поделиться:
Популярные книги

Отморозок 3

Поповский Андрей Владимирович
3. Отморозок
Фантастика:
попаданцы
5.00
рейтинг книги
Отморозок 3

Род Корневых будет жить!

Кун Антон
1. Тайны рода
Фантастика:
фэнтези
попаданцы
аниме
7.00
рейтинг книги
Род Корневых будет жить!

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Полковник Империи

Ланцов Михаил Алексеевич
3. Безумный Макс
Фантастика:
альтернативная история
6.58
рейтинг книги
Полковник Империи

Идеальный мир для Лекаря 11

Сапфир Олег
11. Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 11

Последняя Арена 2

Греков Сергей
2. Последняя Арена
Фантастика:
рпг
постапокалипсис
6.00
рейтинг книги
Последняя Арена 2

Скрываясь в тени

Мазуров Дмитрий
2. Теневой путь
Фантастика:
боевая фантастика
7.84
рейтинг книги
Скрываясь в тени

Герцог и я

Куин Джулия
1. Бриджертоны
Любовные романы:
исторические любовные романы
8.92
рейтинг книги
Герцог и я

Владеющий

Злобин Михаил
2. Пророк Дьявола
Фантастика:
фэнтези
8.50
рейтинг книги
Владеющий

Развод с миллиардером

Вильде Арина
1. Золушка и миллиардер
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Развод с миллиардером

Паладин из прошлого тысячелетия

Еслер Андрей
1. Соприкосновение миров
Фантастика:
боевая фантастика
попаданцы
6.25
рейтинг книги
Паладин из прошлого тысячелетия

Боги, пиво и дурак. Том 6

Горина Юлия Николаевна
6. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 6

Бестужев. Служба Государевой Безопасности. Книга вторая

Измайлов Сергей
2. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга вторая

Орден Багровой бури. Книга 6

Ермоленков Алексей
6. Орден Багровой бури
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Орден Багровой бури. Книга 6