
Estou reescrevendo o debootstrap para me adequar e para a educação. Por que o comando "shift" no trecho de código de interação no arquivo "funções"? Não há tantos argumentos enviados para usar "shift" e, como eu sei, os argumentos de função são acessíveis apenas em função.
Exemplo:
error () {
# <error code> <name> <string> <args>
local err="$1"
local name="$2"
local fmt="$3"
shift; shift; shift
if [ "$USE_DEBIANINSTALLER_INTERACTION" ]; then
(echo "E: $name"
for x in "$@"; do echo "EA: $x"; done
echo "EF: $fmt") >&4
else
(printf "E: $fmt\n" "$@") >&4
fi
exit $err
}
Responder1
As três mudanças removem o código de erro, o nome e a string dos argumentos para que o restante dos argumentos fique convenientemente $@
no for
loop da linha nove do script.