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




Программирование на языке сценариев командной оболочки - стр. 32


echo

ABC=$'\101\102\103\010' # 101, 102, 103 это A, B и C соответственно. echo $ABC

echo; echo

escape=$'\033' # 033 -- восьмеричный код экранирующего символа. echo "\"escape\" выводится как $escape" # вывод отсутствует.

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-символы экранированы. # Это нормально.

<


Содержание  Назад  Вперед