Проблема Xorg с Radeon Mobility X1600 на 20-дюймовом ЖК-дисплее iMac 2006 года

Причина, по которой "труба только" появляется четыре раза, на самом деле состоит в том, что функция contextработает правильно, аecho $'foo bar' | while read xи т. д. является трубой--все в цикле whileполучает ввод из канала. Чтобы получить желаемый результат, измените цикл whileна цикл forи ничего не подключайте к этому циклу for:

.
for x in foo bar; do  context ;  echo 'f' | context; done

Выход:

no pipes
pipe in only
no pipes
pipe in only

Чтобы показать, где ошибка в коде OP, просто передайте что-нибудь в цикл forи посмотрите, что произойдет:

echo | for x in foo bar; do  context ;  echo 'f' | context; done

Выход:

pipe in only
pipe in only
pipe in only
pipe in only

Новичок может (ошибочно )предположить, что while read xпотребляет весь стандартный ввод, но это не обязательно так. Рассмотрим этот пример,с readвнутри петли while:

printf '%s\n' foo bar baz buzz | 
while read x; do echo $x; read y; echo ${y^^} ;done

Выход:

foo
BAR
baz
BUZZ
1
22.11.2021, 20:23
1 ответ

К сожалению, у меня есть ответ только на ваш альтернативный вопрос. Надлежащим каналом для сообщения об этой ошибке является список рассылки ядра Linux. Инструкции о том, как отправить сообщение, как соблюдать правила этикета и как подписаться (или получить ответы на свое сообщение, если вы не хотите получать огромные объемы, связанные с подпиской ), можно найти здесь :

.

http://vger.kernel.org/lkml/#s3

Уровень детализации, который вы предоставили, превосходен и будет очень полезен для отчета об ошибке, но не удивляйтесь, если вам потребуется еще больше информации.

1
24.11.2021, 21:01

Теги

Похожие вопросы