Hi,
whats the difference between $* and $@ in command line arguments to a shell scripts
Hi,
whats the difference between $* and $@ in command line arguments to a shell scripts
$* = all the arguments are double quoted. If a script receives 2 arguments, $* is equivalent to $1 $2
$@ All the arguments are individually double quoted,If a script receives 2 arguments, $@ is equivalent to $1 $2
in both cases
cat scr
for i in $@
do
echo "@ $i"
done
for j in $*
do
echo "* $j"
done
./scr a b c "d e"
@ a
@ b
@ c
@ d
@ e
can we see some diff through this kind of script ???
Look into man sh under the section 'Special Parameters'
* Expands to the positional parameters, starting from one. When
the expansion occurs within double quotes, it expands to a sin-
gle word with the value of each parameter separated by the
first character of the IFS special variable. That is, "$*" is
equivalent to "$1c$2c...", where c is the first character of
the value of the IFS variable. If IFS is unset, the parameters
are separated by spaces. If IFS is null, the parameters are
joined without intervening separators.
@ Expands to the positional parameters, starting from one. When
the expansion occurs within double quotes, each parameter
expands to a separate word. That is, "$@" is equivalent to
"$1" "$2" ... When there are no positional parameters, "$@"
and $@ expand to nothing (i.e., they are removed).