[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