
Estoy reescribiendo debootstrap para adaptarme a mí y a la educación. ¿Por qué el comando "cambiar" en un fragmento de código de interacción en el archivo "funciones"? No se envían tantos argumentos para usar "shift" y, como sé, los argumentos de función solo son accesibles en función.
Ejemplo:
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
}
Respuesta1
Los tres turnos eliminan el código de error, el nombre y la cadena de los argumentos para que el resto de los argumentos queden convenientemente en $@
el for
bucle de la línea nueve del script.