Passing arguments with spaces between (bash) script
I've got the following bash two scripts
a.sh:
#!/bin/bash
./b.sh 'My Argument'
b.sh:
#!/bin/bash
someApp $*
The someApp binary receives $*
as 2 arguments ('My' and 'Argument') instead of 1.
I've tested several things:
- Running someApp only thru
b.sh
works as expected - Iterate+echo the arguments in
b.sh
works as expected - Using
$@
instead of$*
doesn't make a difference
Solution 1:
$*
, unquoted, expands to two words. You need to quote it so that someApp
receives a single argument.
someApp "$*"
It's possible that you want to use $@
instead, so that someApp
would receive two arguments if you were to call b.sh
as
b.sh 'My first' 'My second'
With someApp "$*"
, someApp
would receive a single argument My first My second
. With someApp "$@"
, someApp
would receive two arguments, My first
and My second
.