Can anybody tell me what does $*
mean in bash scripting?
I tried to search on google for it, but I found only about $0
, $1
an
As an independent command it doesn't have any significance in bash scripting. But, as per usage in commands, it's used to indicate common operation on files / folders with some common traits.
and with grep used to represent zero or more common traits in a command.
It's a space separated string of all arguments. For example, if $1
is "hello" and $2
is "world", then $*
is "hello world". (Unless $IFS is set; then it's an $IFS separated string.)
See this page:
http://tldp.org/LDP/abs/html/internalvariables.html#IFSEMPTY
The behavior of $* and $@ when $IFS is empty depends + on which Bash or sh version being run. It is therefore inadvisable to depend on this "feature" in a script.
If you see $
in prefix with anything , it means its a variable. The value of the variable is used.
Example:
count=100
echo $count
echo "Count Value = $count"
Output of the above script:
100
Count Value = 100
From the man
page:
*
Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, it expands to a single word with the value of each parameter separated by the first character of the IFS special variable. That is, "$*
" is equivalent to "$1
c$2
c...", 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.
So it is equivalent to all the positional parameters, with slightly different semantics depending on whether or not it is in quotes.
Its the list of arguments supplied on the command line to the script .$0 will be the script name.