LINUX.ORG.RU

[dash] [bug] Перенаправление IO не работает для дескрипторов из >1 цифры

 ,


0

0

Обнаружена забавная особенность dash (проверено на Ubuntu и ALT):

При попытке перенаправить дескриптор с более чем одной цифрой в номере получаем гениальное сообщение об ошибке word unexpected:

-bash$ dash -c "(ls -l /proc/self/fd) 6>/dev/null"
total 0
lrwx------ 1 lodin lodin 64 2010-01-15 05:52 0 -> /dev/pts/2
lrwx------ 1 lodin lodin 64 2010-01-15 05:52 1 -> /dev/pts/2
lrwx------ 1 lodin lodin 64 2010-01-15 05:52 2 -> /dev/pts/2
lr-x------ 1 lodin lodin 64 2010-01-15 05:52 3 -> /proc/16020/fd
l-wx------ 1 lodin lodin 64 2010-01-15 05:52 6 -> /dev/null

-bash$ dash -c "(ls -l /proc/self/fd) 06>/dev/null"
dash: Syntax error: word unexpected

# Вот баш нормально отрабатывает:
-bash$ bash -c "(ls -l /proc/self/fd) 06>/dev/null"
total 0
lrwx------ 1 lodin lodin 64 2010-01-15 05:53 0 -> /dev/pts/2
lrwx------ 1 lodin lodin 64 2010-01-15 05:53 1 -> /dev/pts/2
lrwx------ 1 lodin lodin 64 2010-01-15 05:53 2 -> /dev/pts/2
lr-x------ 1 lodin lodin 64 2010-01-15 05:53 3 -> /proc/16024/fd
l-wx------ 1 lodin lodin 64 2010-01-15 05:53 6 -> /dev/null

А между тем конструкция нередкая и в мануалах описанная:

(
    flock -x 200
    do_something
) 200>$LOCKFILE

В общем, хозяйке на заметку.

★★★★

# The largest possible value is implementation-defined; however, all implementations shall support at least 0 to 9, inclusive, for use by the application.

нет никакого бага, все по стандарту

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.