[devel] bash4
Sergey Vlasov
vsu на altlinux.ru
Пт Авг 13 18:30:16 UTC 2010
On Fri, Aug 13, 2010 at 07:43:21PM +0400, Alexey Tourbin wrote:
> Есть ещё одна нехорошая засада - у нас /bin/sh и /bin/bash собраны
> в очень разной конфигурации: у них отличается синтаксис. Я ставил
> этот вопрос ещё 6 лет назад!
>
> $ sh -c 'diff <(echo a) <(echo b)'
> sh: -c: line 0: syntax error near unexpected token `('
> sh: -c: line 0: `diff <(echo a) <(echo b)'
> $ bash -c 'diff <(echo a) <(echo b)'
> 1c1
> < a
> ---
> > b
> $
Это не конфигурация, а документированная зависимость поведения bash от
имени, использованного при вызове, и отключение поддержки process
substitution в режиме совместимости с POSIX (документировано только в
info bash, в man в явном виде не описано):
$ bash --posix -c 'diff <(echo a) <(echo b)'
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `diff <(echo a) <(echo b)'
$ ln -s /bin/bash sh; ./sh -c 'diff <(echo a) <(echo b)'
./sh: -c: line 0: syntax error near unexpected token `('
./sh: -c: line 0: `diff <(echo a) <(echo b)'
$ sh -c 'set +o posix
diff <(echo a) <(echo b)'
1c1
< a
---
> b
(в последнем случае нужно именно \n в строке, через разделитель ';'
не сработает - видимо, переключение опции posix происходит только при
разборе следующей строки).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : отсутствует
Тип : application/pgp-signature
Размер : 198 байтов
Описание: Digital signature
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20100813/f1ba43d8/attachment.bin>
Подробная информация о списке рассылки Devel