141 / 122 / 40
Регистрация: 18.10.2017
Сообщений: 1,142
1

Подменить stdin для read

13.01.2022, 21:25. Показов 256. Ответов 4
Метки нет (Все метки)

Здравствуйте!

Если в bash выполняется команда
Bash
1
read flnm
и ввести нечто с клавиатуры, то результат останется в переменной REPLY.
А можно ли добиться того же, если вводить через конвейер типа такого:
Bash
1
/bin/echo $var | read flnm
где var - локальная переменная? Мне не удалось, в лучшем случае содержимое $var заносится в $flnm,
но в REPLY не попадает. Я пробовал по всякому, и с exec и просто с перенаправлением и с while ... done <<<
не получается.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2022, 21:25
Ответы с готовыми решениями:

При вызове sys.stdin.read() выдаёт AttributeError
Python 2.7.3 (default, Apr 10 2012, 23:24:47) on win32 Type &quot;copyright&quot;, &quot;credits&quot; or &quot;license()&quot;...

if (feof(stdin)) while(!feo(stdin)) while(!feof(stdin) )
Как с ними правильно работать в Си?? Объясните принцип пожалуйста?

Как подменить IP для определенного приложения?
Прокси работают у меня почему то с громким скрипом. PPPoE соединение. Свой IP локальный. Я...

Адаптация кода для тестировщика stdin → stdout
Здравствуйте, я написал программу по задания на PyCharm и там всё работает нормально, но при в воде...

4
Эксперт NIX
2003 / 686 / 229
Регистрация: 28.06.2015
Сообщений: 1,412
Записей в блоге: 16
13.01.2022, 22:01 2
Если в скрипте то можете включить опцию:

Bash
1
2
3
4
5
#!/bin/bash
 
shopt -s lastpipe
echo my first string | read
echo $REPLY
Ну а в командной строке в текущей оболочке это не сработает и нужно будет изловчиться как то так:
Код
(shopt -s lastpipe; echo my second string | read; echo $REPLY)
Пайп является инициатором вызова подоболчки, так что лучше изменить конструкцию на:
Код
read <<<$var
echo $REPLY
Будет работать как в скрипте, так и в командной строке.
0
141 / 122 / 40
Регистрация: 18.10.2017
Сообщений: 1,142
13.01.2022, 22:46  [ТС] 3
nezabudka, благодарю за совет! Сразу попробовал последнее, с "read <<< $var",
это сработало, я не догадался до такой конструкции. Другие варианты ещё е пробовал.
Но у меня скрипт с этими двумя строками вызывается из другого, тоце из двух строк,
в 1-й принимается аргумент, а во 2-й вызывается скрипт с "read <<< $var", я хотел через REPLY
передавать результат в вызывающий скрипт. Когда-то давно, не помню, сколько лет назад, это сработало.
а сейчас в вызывающем скрипте REPLY пустая.
0
255 / 101 / 29
Регистрация: 27.02.2016
Сообщений: 426
16.01.2022, 07:44 4
несколько лет назад вообще все было по другому

скрипты покажите
0
141 / 122 / 40
Регистрация: 18.10.2017
Сообщений: 1,142
16.01.2022, 10:36  [ТС] 5
skouzmine, да не стоит беспокоиться, вполне возможно, я уже плохо помню и путаю. Что есть, то есть.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2022, 10:36

Как подменить robots.txt для некоторых доменов на хостинге?
Дано: Xостинг сайтов, Ubuntu 12.04, Apache2.22 На хостинге расположены &quot;живые&quot; сайты и...

Как считать число из stdin для дальнейшего использования
Использую NASM под OCUNIX

Stdin, для чего делается данное вычитание в коде
Интересует данный фрагмент в файле stdin.asm Допустим мой буфер - InputBuffer:BYTE Логика...

Как задать путь для папки а не для файла для функции read and write
myFile = r'C:\U\12' with open(myFile,'r') as f: contents = f.read() contents =...

Bluetooth Android. read failed, socket might closed or timeout, read ret: -1
Всем привет! Есть след. девайсы: OnePlus, Samsung A50, Pixel 3a Пытаюсь подключить девайсы по...

Добавить 2 класса Read и Display, без Console.(Write/Read)Line
Нужно добавить class read и class display. ОБРАТИТЕ ВНИМАНИЕ мне не надо через Console.Readline и...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru