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: