Оператор << называется here document. С его помощью можно ввести строку состоящую из нескольких строк или присвоить переменной многострочное значение.
Если вы хотите переменной присвоить многострочное значение, то это можно сделать примерно так:
a=`cat <<_EOF_ 1 2 3 _EOF_ `
Выведем значение переменной:
echo "$a"
То есть общий вид конструкции присвоения переменной многострочного значения:
ПЕРЕМЕННАЯ=`cat <<_EOF_ СТРОКА1 СТРОКА2 СТРОКА3 _EOF_` echo "$ПЕРЕМЕННАЯ"
Обратите внимание, что при использовании переменной нужно заключать её в двойные кавычки, в противном случае все строки будут собраны в одну.
В следующем примере переменной GetCapabilities присваивается многострочное значение в формате XML:
#!/bin/bash GetCapabilities=`cat <<_EOF_ <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <GetCapabilities xmlns="http://www.onvif.org/ver10/device/wsdl"> <Category> All </Category> </GetCapabilities> </s:Body> </s:Envelope> _EOF_`
Here document это весьма полезная конструкция, к примеру, с её помощью можно делать шаблоны текста, меню, выводимых данных:
#!/bin/bash userName="MiAl (Alex)" site=ZaLinux.ru status=admin cat <<_EOF_ User: $userName Web-site: $site Role: $status _EOF_
Вывод:
User: MiAl (Alex) Web-site: ZaLinux.ru Role: admin
Здесь вы найдёте информацию о том, как использовать << (here document) непосредственно в командной строке, а не только в скриптах.
Связанные статьи:
- Как в Bash проверить, содержит ли строка подстроку (64.2%)
- Как извлечь часть строки в Bash (64.2%)
- Как записать символы строки в обратном порядке (60.8%)
- Как ввести в cin строки с пробелами в С++ (60.8%)
- Сравнение char со строкой в C++ (60.8%)
- Как использовать grep для поиска по стандартному выводу ошибок (stderr) (RANDOM - 3.5%)
Благодарю за качественную ифнормацию.