С Новым годом! Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
47 / 31 / 21
Регистрация: 04.04.2016
Сообщений: 209

Странный синтаксис в шелл-скрипте

17.01.2017, 10:14. Показов 2069. Ответов 3

Студворк — интернет-сервис помощи студентам
Добрый день!
Осваиваю Линукс помаленьку. В одном из скриптов наткнулся на такую запись:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
echo
cat <<!
какой-то текст
!
if [ "$Message" = "CURRENT_INVALID" ]
then
cat <<!
какой-то текст
!
fi
cat <<!
какой-то текст
!
Не смог нагуглить такого применения операторов ни в команде cat, ни в самом Bash. Насколько понимаю, данная команда выводит текст как последовательность между <<! и !
echo без параметров - я так понимаю, вывод пустой строки. Скрипт формирует HTML-страничку с элементами javaScript (по сути своей является cgi-файлом http-сервера).
Не совсем понятно как работает обозначенная последовательность операторов (<<! и !). Возможно, она относится вообще к html или javaScript. И не понятно, как все это дело передается http-серверу, ведь скрипт печатает в стандартный вывод...
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.01.2017, 10:14
Ответы с готовыми решениями:

Странный синтаксис шаблона
Здравствуйте. Объясните пожалуйста, почему при передаче функции-шаблону какого-нибудь контейнера, получается старнный синтаксис. ...

Странный синтаксис конструктора класса
Объясните с точки зрения синтаксиса C++, что означает перечисление после двоеточия? OgreApp::OgreApp(void) : mRoot(0), mCamera(0), ...

Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива?
К элементам массива можно обращаться разными способами. Обычно в квадратных скобках пишут номер элемента массива, а тут узнал что так же...

3
 Аватар для volodin661
6671 / 2264 / 346
Регистрация: 10.12.2013
Сообщений: 7,829
17.01.2017, 10:59
Лучший ответ Сообщение было отмечено Pink_Pank как решение

Решение

используя доброту дядюшки Гугля, посмотреть
'bash heredoc'
1
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
17.01.2017, 12:31
Pink_Pank, какбэ... cat это довольно универсальная команда, с ее помощью можно не только "читать", но "писать", а также выводить что-то вроде отладочной информации в терминал, - последнее Ваш случай. На будущее, чтобы не возникало подобных вопросов:
Bash
1
2
3
4
cat << EOF > my.txt
здесь некий текст, который должен
храниться в my.txt
EOF
Команда выше создаст файл my.txt с содержимым, указанным до EOF.
А вообще есть такие штуки, как man, info и IRC-каналы для линуксоидов, на которых могут подсказать с различными трюками bash.
1
47 / 31 / 21
Регистрация: 04.04.2016
Сообщений: 209
17.01.2017, 13:05  [ТС]
Да, да. Я уже начитался про встраиваемые документы. Просто сходу это не нагуглил. Всякие перенаправления ввода-вывода и каналы, а про это ни слова.
Гуд! просветился. ) А что по поводу вывода? Или вывод из cgi попадает не в stdout, а в сервер?

Добавлено через 14 минут
Все. Нашел. Всем спасибо.

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

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

HTML5
1
2
3
4
5
6
7
Content-Type: text/html
 
<HTML>
  <BODY>
    <H1>Hello, world</H1>
  </BODY>   
</HTML>
Добавлено через 2 минуты
взято отсюда https://www.opennet.ru/docs/RUS/cgi-perl/#cgi
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.01.2017, 13:05
Помогаю со студенческими работами здесь

Странный doc(rtf) файл (совсем странный)
Добрый день, сегодня на работе столкнулся с очень странным .doc файлом. 3 страницы - вес 45,9 МБ. &quot;Что за черт&quot; -думаю я....

Шелл
Вот пока что код для шелла, нужна помощь в реализации просмотра истории команд, конвейера,cd и pwd. Чем будет отличаться вызов встроенной в...

Как перевести синтаксис макроса VBA (Excel) в синтаксис Visual FoxPro
Здравствуйте! Скажите пожалуйста, как перевести синтаксис записанного макроса в excel в синтаксис FoxPro? Нужно, чтобы из FoxPro...

Как перевести синтаксис Intel в синтаксис AT&T? (ассемблерная вставка в СИ)
Извиняюсь, что, возможно, пишу не в ту тему. Нужен именно AT&amp;T синтаксит. В качестве примера для курсовой я разбираю перемножение...

Шелл.сортировка
Упорядочить по ключу массив записей методом Шелла. Ключом в записи является название фильма на видеокасете, а информационное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru