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
Brief about the command kill PID?
How do you run command every time a file is modified?
tell me something about linux commands.
Explain about communication features in UNIX?
Write a command that will display all .txt files, including its individual permission.
What is $@ in makefile?
What are the basic dos commands?
What does c mean in linux?
What is makefile target?
What can you tell about the tar command?
What is tty in linux process?
How do I do a whois search?
What is makefile in unix?
What is ps command in linux?
What does chmod 777 do?