Обнаружена забавная особенность 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
В общем, хозяйке на заметку.