The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Стандартные потоки ввода/вывода в UNIX/Linux, opennews (??), 14-Июл-09, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


5. "Стандартные потоки ввода/вывода в UNIX/Linux"  +/
Сообщение от аноним (?), 14-Июл-09, 19:48 
> почему не работает echo text | read val и ряд других

Один написал бред, другой подхватил. Указанная конструкция замечателно работает:

% echo text | read var; echo $var
text

вероятно имелось в виду (echo text | read var); echo $var

В общем статья хорошая, но тема скобок совершенно не раскрыта.

Ответить | Правка | Наверх | Cообщить модератору

8. "Стандартные потоки ввода/вывода в UNIX/Linux"  +/
Сообщение от xguru (?), 14-Июл-09, 20:02 
>> почему не работает echo text | read val и ряд других
>
>Один написал бред, другой подхватил. Указанная конструкция замечателно работает:
>
>% echo text | read var; echo $var
>text
>

У вас какой shell?

tcsh?

В sh/bash это не работает, проверьте, если не лень

>вероятно имелось в виду (echo text | read var); echo $var
>
>В общем статья хорошая, но тема скобок совершенно не раскрыта.

Тема скобок это да


Ответить | Правка | Наверх | Cообщить модератору

9. "Стандартные потоки ввода/вывода в UNIX/Linux"  +/
Сообщение от xguru (?), 14-Июл-09, 20:08 
>[оверквотинг удален]
>>Один написал бред, другой подхватил. Указанная конструкция замечателно работает:
>>
>>% echo text | read var; echo $var
>>text
>>
>
>У вас какой shell?
>
>tcsh?
>

Хотя однако, какой tcsh, там же read нет.
Так что таки bash у вас.

Покажите как работает, пожалуйста

Ответить | Правка | Наверх | Cообщить модератору

11. "Стандартные потоки ввода/вывода в UNIX/Linux"  +/
Сообщение от аноним (?), 14-Июл-09, 22:36 
>Хотя однако, какой tcsh, там же read нет.
>Так что таки bash у вас.

У меня zsh.

Ответить | Правка | Наверх | Cообщить модератору

12. "Стандартные потоки ввода/вывода в UNIX/Linux"  +/
Сообщение от xguru (?), 14-Июл-09, 22:43 
В zsh работает, проверил только что.
Спасибо за поправку
Ответить | Правка | Наверх | Cообщить модератору

17. "Стандартные потоки ввода/вывода в UNIX/Linux"  +/
Сообщение от Аноним (-), 15-Июл-09, 00:29 
> Хотя однако, какой tcsh, там же read нет.

в tcsh есть $< для чтения значения переменной из стандартного ввода

    > set foo=$<

    blah
    > echo Here is my answer: $foo

    Here is my answer: blah

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

22. "Стандартные потоки ввода/вывода в UNIX/Linux"  +/
Сообщение от xguru (?), 15-Июл-09, 10:44 
>> Хотя однако, какой tcsh, там же read нет.
>
>в tcsh есть $< для чтения значения переменной из стандартного ввода
>
>    > set foo=$<
>
>    blah
>    > echo Here is my answer: $foo
>
>    Here is my answer: blah

Это немножечко не то.
Нужно же было прочитать строку из вывода другого процесса.

%> echo value | set foo=$<
%> echo $foo

%>

Не выводит.

Как сделать чтобы работало?

Вариант с командной подстановкой не предлагать,
нужно чтобы читалась одна строка.

Ответить | Правка | Наверх | Cообщить модератору

26. "Стандартные потоки ввода/вывода в UNIX/Linux"  +/
Сообщение от gegMOPO4 (ok), 15-Июл-09, 17:10 
foo=$(echo value|head -n 1)
Ответить | Правка | Наверх | Cообщить модератору

27. "Стандартные потоки ввода/вывода в UNIX/Linux"  +/
Сообщение от Аноним (-), 15-Июл-09, 20:10 
> foo=$(echo value|head -n 1)

в случае tcsh скорее
    > set foo=`echo value`

Ответить | Правка | Наверх | Cообщить модератору

29. "Стандартные потоки ввода/вывода в UNIX/Linux"  +/
Сообщение от xguru (?), 16-Июл-09, 21:39 
Не, ребята, это всё не то.
нужно чтобы read читал только одну строку,
а остальное не трогал.

Например, как вы с помощью командной подстановки,
которую вы рекомендуете,
сделаете такое:

|while read line
  do
    ....
  done

Как это сделать в tcsh с помощью той конструкции, которую
вы выше рекомендовали?

Ответить | Правка | Наверх | Cообщить модератору

15. "Стандартные потоки ввода/вывода в UNIX/Linux"  +/
Сообщение от Аноним (-), 15-Июл-09, 00:22 
>> почему не работает echo text | read val и ряд других
>
>Один написал бред, другой подхватил. Указанная конструкция замечателно работает:

     Note that unlike some other shells, sh executes each process in the pipe‐
     line as a child of the sh process.  Shell built‐in commands are the
     exception to this rule.  They are executed in the current shell, although
     they do not affect its environment when used in pipelines.

т.е. команды в конвеере (каналы) не влияют на окружение, в коем они запущены. Кстати, как правильно имплементировать конвееры не оговорено в POSIX. Так что zsh себя тоже правильно ведет.

Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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