what is difference between $@ and $* in UNIX Shell script
Answer Posted / 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 |
Post New Answer View All Answers
What is ulimit command?
How can we increase disk read performance in single command in Linux operating system?
How do I do a whois search?
Explain about chmod options filename?
How do you ask politely?
You want to know how many lines in the kickoff file contains ‘prize’. Which of the following commands will produce the desired results?
What is mkdir p?
What does execute mean in linux?
What is vnc?
Which of the commands will replace all occurrences of the word rate with the word speed in the file racing?
You suspect that you have two commands with the same name as the command is not producing the expected results. What command can you use to determine thelocation of the command being run?
How do I check dns entry?
What is the programming language for linux?
What is cd in cmd?
What is in mkdir command?