Reputation: 1295
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:
b.sh
works as expectedb.sh
works as expected$@
instead of $*
doesn't make a differenceUpvotes: 112
Views: 113161
Reputation: 530882
$*
, 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
.
Upvotes: 168