[devel] IFS="()" read

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Окт 3 02:20:53 MSD 2007


On Wed, Oct 03, 2007 at 02:04:25AM +0400, Alexey Tourbin wrote:
> On Wed, Oct 03, 2007 at 12:54:05AM +0300, Led wrote:
> > Если перед "read ..." ставить ";" или поставить его с новой строки, то
> > все шеллы правы.
> 
> Но некоторые правее. :)
> 
> $ echo 'executable(cat)' |ksh -c 'IFS="()"; read t r; echo $t $r'
> executable cat 
> $ echo 'executable(cat)' |zsh -c 'IFS="()"; read t r; echo $t $r'
> executable cat)
> $ 
> 
> Похоже на явный глюк в ksh -- типа IFS "не полностью присваивается".
> (А zsh вообще особо не претендует на совместимость...)

Вы меня сбили с толку --

$ echo 'executable(cat)' |ksh -c 'IFS="()"; read t r; echo "$t $r"'
executable cat)
$ echo 'executable(cat)' |zsh -c 'IFS="()"; read t r; echo "$t $r"'
executable cat)
$ 

(Здесь в последнем echo нужно квотить, иначе последняя скобка
отрезается при подстановке параметров в echo.)

Вопрос не грошовый -- как должен вести себя read если в IFS есть
non-whitespace delimiter и последняя буква сроки является как
раз таким delimiter?  То есть в конце образовывается как бы "пустое
слово".  Считается ли при этом, что "переменных не хватает" (и в таком
случае delimiter должен быть присоединен к строке "as is"), или же
переменных "как раз нормально хватает" и последний delimimter
отбрасывается?

Посмотрите внимательно описание IFS и read:
http://www.opengroup.org/onlinepubs/007908799/xcu/chap2.html
http://www.opengroup.org/onlinepubs/007908799/xcu/read.html

Вопрос не грошовый потому что это вопрос о статусе стандарта --
может ли он быть однозначно реализован или же это такой детский лепет
на тему "вот как примерно должен работать шелл".
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20071003/7bdc293e/attachment-0002.bin>


Подробная информация о списке рассылки Devel