[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

dash: поведение shift в зависимости от set [-+]e



Уважаемые, близкие к разработчикам Debian :)

В свете грядущего перевода большинства системных скрипов с bash на dash,
выяснил некоторое странное поведение builtin команды shift.

--------------
#!/bin/dash -x
set -e
...
set +e; cd /NON_EXISTING_DIR; set -e
echo "RET=$?"
exit $RET
-------------

Код представляет собой довольно распространённый пример обхода
FALSE-возврата некоторых команд в скриптах /etc/init.d c общей политикой "set -e"

Однако, если такой командой будет shift, 
вне зависимости от "set [-+]e" скрипт _прекращает_ работу с возвратом кода 2.

Прим: предполагается вызов shift, когда сдвигать уже нечего.

shift [n]
     ...
     If n is greater than the number of positional parameters, shift
     will issue an error message, and exit with return status 2.

Судя по всему, такое поведение shift - это bag dash-а и нужно его репортить?

-- 
С Уважением,
       Андрей Никитин



Reply to: