Esto surgió mientras un amigo depuraba un script de backup.
Supongamos que creamos un script denominado ./myscript con el contenido siguiente:
echo parametro1 es $1
echo parametro2 es $2
Y luego lo ejecutamos alternativamente con los intérpretes Dash y Bash:
mauro@yoda$ dash
$ . ./myscript
parametro1 es
parametro2 es
$ . ./myscript foo bar
parametro1 es
parametro2 esmauro@yoda$ bash
$ . ./myscript
parametro1 es
parametro2 es
$ . ./myscript foo bar
parametro1 es foo
parametro2 es bar
¿Se nota la diferencia?
Efectivamente, al utilizar el comando "." (dot o source) Dash no pasa ningún argumento al script, mientras Bash sí lo hace. ¿Bug o Feature? Según parece, es una implementación estricta del estándar POSIX. En cualquier caso, hasta que nos dimos cuenta, fue un dolor de cabeza.
No hay comentarios.:
Publicar un comentario