The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Вывод на экран перенаправленного ввода"
Отправлено Andrey Mitrofanov, 03-Май-12 09:44 
> Что то никак не могу найти как сделать так, чтобы перенавравленный ввод
> выводился в окно терминала.

Я тебе расскажу, как это работает. Я тебе даже скажу, _почему перенаправленны не выводится в окно терминала. (И даже дам ещё один совет, который тебе опять не понДравится: хочешь подробного "видения", пиши логи.)

> Проще пояснить на примере. Есть скрипт test:
> read a
> echo "a=$a"

Итак, скрипт. read читает 1 строку в переменную со _своего и, соответственно, _скрипта stdin-а. Скрипт исполняет, ну, скажем, bash.

> Если его запустить и ввести значение 123, то в терминале увидим:
> 123
> a=123

Имеем: stdin и stdout скрипта -- на каком-нибудь /dev/pts/7. У bash-а - они же. bash-у их _дал терминал, скажем, konsole. В _терминале включено т.н. "локальное эхо": всё, что воодит юзер в иксах в этом терминале, он, терминал, _отображает в окошке (эхо!) и даёт на stdin того /dev/pts/7, откуда их (ну, 1 строку), при выполнении команды скрипта read, и читает тот самый bash и кладёт её, строку, в переменную и т.д.

Итого: строка в переменной, эхо на терминале. Заметь, эхо на экран положил не скрипт, не баш, а _терминал.

> А если выполнить test<<<123, то вывод будет:
> a=123

Случай №2, "сложный-непонятный, детективно запутанный": выполняя директиву переназначения стд.ввода ("<<<" в данном случае) _баш перед запуском скрипта "подкючает" ему на stdin непий пайп (см.pipe), в который на вх.конце пишет строку "123". А когда скрипт (и да, тот же, но местами другой!, баш) выполняет чтение из своего stdin никакого чтения из /dev/pts/$NN _терминалом и соотв._эха на его экран не происходит.

Итого: строка в переменной, нет эха на терминале. (А если пожмакать кнопки в терминале, _их он отобразит (=эхо), но на stdin скрипта они не попадут.)

Всё логично, всё работает, как задумано. И теперь, надеюсь, понятно почему.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.

На сайте действует частичное премодерирование - после публикации некоторые сообщения от анонимов могут автоматически скрываться ботом. После проверки модератором ошибочно скрытые сообщения раскрываются. Для ускорения раскрытия можно воспользоваться ссылкой "Сообщить модератору", указав в качестве причины обращения "скрыто по ошибке".



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру