Propagar todos los argumentos en un script de shell Bash
Estoy escribiendo un script muy simple que llama a otro script y necesito propagar los parámetros de mi script actual al script que estoy ejecutando.
Por ejemplo, el nombre de mi script es foo.sh
and call bar.sh
.
foo.sh:
bar $1 $2 $3 $4
¿Cómo puedo hacer esto sin especificar explícitamente cada parámetro?
Aceptado
Úselo "$@"
en lugar de simple $@
si realmente desea que sus parámetros se pasen de la misma manera.
Observar:
$ cat no_quotes.sh
#!/bin/bash
echo_args.sh $@
$ cat quotes.sh
#!/bin/bash
echo_args.sh "$@"
$ cat echo_args.sh
#!/bin/bash
echo Received: $1
echo Received: $2
echo Received: $3
echo Received: $4
$ ./no_quotes.sh first second
Received: first
Received: second
Received:
Received:
$ ./no_quotes.sh "one quoted arg"
Received: one
Received: quoted
Received: arg
Received:
$ ./quotes.sh first second
Received: first
Received: second
Received:
Received:
$ ./quotes.sh "one quoted arg"
Received: one quoted arg
Received:
Received:
Received:
Para bash y otros shells tipo Bourne:
bar "$@"
Uso "$@"
(funciona para todos los compatibles con POSIX ).
[...] bash presenta la variable "$@", que se expande a todos los parámetros de la línea de comandos separados por espacios.
De Bash por ejemplo .