what is difference between $@ and $* in UNIX Shell script
Answers were Sorted based on User's Feedback
Answer / yogesh malkoti
In a shell script :
$@: each quoated string treated as a separate argument
while gving at command line.
$*: stores the complete set of positional parameters as a
single string
| Is This Answer Correct ? | 45 Yes | 3 No |
Answer / rajkapooor
$@ all quated string in command line treated as seprate
argument
$* stores all argument as a single argument
| Is This Answer Correct ? | 12 Yes | 2 No |
Answer / alf55
There is a difference between using $@ and using "$@". The
first is the same as using $*, while the latter is what was
being described ad $@. It only handles the arguments
correctly when used as "$@". However, you will not see where
the arguments are changing in its simple usage in a print.
echo "arguments are:"; for arg in "$@"; do echo "
${arg}"; done
Will show each argument on a new line indented by four spaces.
Here is an example:
[code]
bash$ function show_simple_args
> {
> echo "There are $# arguments passed, can you find
them correctly?"
> echo "using \$*:"
> echo $*
> echo "using \$@:"
> echo $@
> echo "using \"\$@\":"
> echo "$@"
> echo "using for loop with \$*:"
> echo "arguments are:"; for arg in $*; do echo "
${arg}"; done
> echo "using for loop with \$@:"
> echo "arguments are:"; for arg in $@; do echo "
${arg}"; done
> echo "using for loop with \"\$@\":"
> echo "arguments are:"; for arg in "$@"; do echo "
${arg}"; done
> }
bash$
bash$ show_simple_args "arg 1" "arg 2" "arg 3" "arg 4"
There are 4 arguments passed, can you find them correctly?
using $*:
arg 1 arg 2 arg 3 arg 4
using $@:
arg 1 arg 2 arg 3 arg 4
using "$@":
arg 1 arg 2 arg 3 arg 4
using for loop with $*:
arguments are:
arg
1
arg
2
arg
3
arg
4
using for loop with $@:
arguments are:
arg
1
arg
2
arg
3
arg
4
using for loop with "$@":
arguments are:
arg 1
arg 2
arg 3
arg 4
bash$
[/code]
| Is This Answer Correct ? | 9 Yes | 1 No |
How do I permanently delete linux history?
What are the basic commands for user management?
What is DISM command?
How to know linux os is 32 bit or 64 bit?
What is the bash in linux?
What are linux commands useful?
How lilo is useful in linux?
How do I find previous commands in linux?
How can I know my linux os is 32 bit or 64 bit? and How can i know my CPU is 32 bit or 64 bit in linux machine environment.?
How do I move to root in linux?
Explain the free command.
What is ls command and what it does?