In shell scripts, what is the difference between $@ and $* ?
Which one is the preferred way to get the script arguments ?
Are there differences between the different shell interpreters about this ?
In shell scripts, what is the difference between $@ and $* ?
Which one is the preferred way to get the script arguments ?
Are there differences between the different shell interpreters about this ?
From here:
$@ behaves like $* except that when quoted the arguments are broken up properly if there are spaces in them.
Take this script for example (taken from the linked answer):
for var in "$@"
do
echo "$var"
done
Gives this:
$ sh test.sh 1 2 '3 4'
1
2
3 4
Now change "$@"
to $*
:
for var in $*
do
echo "$var"
done
And you get this:
$ sh test.sh 1 2 '3 4'
1
2
3
4
(Answer found by using Google)
With $@ each parameter is a quoted string. Otherwise it behaves the same.
See: http://tldp.org/LDP/abs/html/internalvariables.html#APPREF