Bug 176

Summary: поведение функции read расходится с документацией
Product: Sisyphus Reporter: Michael Shigorin <mike>
Component: bashAssignee: Ivan Zakharyaschev <imz>
Status: CLOSED NOTABUG QA Contact:
Severity: minor    
Priority: P4 CC: glebfm, ldv, placeholder
Version: unstable   
Hardware: all   
OS: Linux   

Description Michael Shigorin 2001-11-24 19:44:59 MSK
Модель:
echo -e \'a\\tb\\tc\\td\' | ( read a b c; echo $a-$b-$c )

При этом последний \\t (нормально входящий в IFS) превращается в пробел (проверено прогоном сквозь od -h).

В man bash говорят, что \&quot;хвост\&quot; _вместе_ с разделителями должен был достаться последней переменной (в примере -- c).

bash-2.04-ipl2mdk.
---

---
zsh работает так, как должен бы и bash.
Comment 1 imz 2002-01-23 20:10:04 MSK
Этот пример не показывает ошибки. Попробуйте поставить замещаемые параметры в двойные кавычки:

echo -e \'a\\tb\\tc\\td\' | ( read a b c; echo \&quot;$a-$b-$c\&quot; ) | od -t a

и Вы увидете, что знак Horizontal Tab остается там (bash-2.05-alt4).

Он испарялся при прохождении стадии word splitting.
Comment 2 imz 2002-01-23 20:10:04 MSK
Этот пример не показывает ошибки. Попробуйте поставить замещаемые параметры в двойные кавычки:

echo -e \'a\\tb\\tc\\td\' | ( read a b c; echo \&quot;$a-$b-$c\&quot; ) | od -t a

и Вы увидете, что знак Horizontal Tab остается там (bash-2.05-alt4).

Он испарялся при прохождении стадии word splitting.