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 find my user id in linux?
Is python faster than bash?
What is s in permission linux?
what is difference between $@ and $* in UNIX Shell script
What happens to hard link when file is deleted?
How commands work in linux?
difference between Tcp and udp
How do you clear the screen in linux?
How we can set the password length in linux?
What is cpu in top command?
How to add Crete a new ftp user? or How to add a exiting user into FTP ?
What is the difference between find and locate command in linux?