shell中$*与$@的区别
2015-03-17 10:59
267 查看
原文地址 http://hi.baidu.com/chorchee/item/19b8c44470e7a42311ee1e30
关于$* 和 $@的 一点 认识 同是菜鸟一起学习
$*
所有的位置参数,被作为一个单词.
注意:"$*"必须被""引用.
$@
与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,
并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的
单词.
注意:"$@"必须被引用.
$@ $* 只在被双引号包起来的时候才会有差异
双引号括起来的情况:
$*将所有的参数认为是一个字段
$@以IFS(默认为空格)来划分字段,如果空格在“”里面,不划分。采用LS的脚本运行./test 1 "2 3" 4 来发现差异
没有括起来的情况是$@和$*一样的,见到IFS就划分字段。还是采用LS的脚本运行./test 1 "2 3" 4 来发现差异
一个小例子 ,仅供参考
[Copy to clipboard] [
- ]CODE:#!/bin/bash
echo
index=1
echo "Listing args with\"\$*\":"
for arg in "$*"
do
echo "Arg #$index=$arg"
let "index+=1"
done
echo "所有的参数被认为是一个单词"
echo
index=1
echo "Listing args with \"\$@\":"
for arg in "$@"
do
echo "Arg #$index=$arg"
let "index+=1"
done
echo "所有的参数被认为是各个独立的单词"
echo
index=1
echo "Listing args with \$* (未被引用):"
for arg in $*
do
echo "Arg #$index=$arg"
let "index+=1"
done
echo "所有的参数被认为是各个独立的单词"
exit 0
运行后输出为
[Copy to clipboard] [
- ]CODE:[root@localhost ABS]# ./test 1 2 3 4
Listing args with"$*":
Arg #1=1 2 3 4
所有的参数被认为是一个单词
Listing args with "$@":
Arg #1=1
Arg #2=2
Arg #3=3
Arg #4=4
所有的参数被认为是各个独立的单词
Listing args with $* (未被引用):
Arg #1=1
Arg #2=2
Arg #3=3
Arg #4=4
所有的参数被认为是各个独立的单词
关于$* 和 $@的 一点 认识 同是菜鸟一起学习
$*
所有的位置参数,被作为一个单词.
注意:"$*"必须被""引用.
$@
与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,
并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的
单词.
注意:"$@"必须被引用.
$@ $* 只在被双引号包起来的时候才会有差异
双引号括起来的情况:
$*将所有的参数认为是一个字段
$@以IFS(默认为空格)来划分字段,如果空格在“”里面,不划分。采用LS的脚本运行./test 1 "2 3" 4 来发现差异
没有括起来的情况是$@和$*一样的,见到IFS就划分字段。还是采用LS的脚本运行./test 1 "2 3" 4 来发现差异
一个小例子 ,仅供参考
[Copy to clipboard] [
- ]CODE:#!/bin/bash
echo
index=1
echo "Listing args with\"\$*\":"
for arg in "$*"
do
echo "Arg #$index=$arg"
let "index+=1"
done
echo "所有的参数被认为是一个单词"
echo
index=1
echo "Listing args with \"\$@\":"
for arg in "$@"
do
echo "Arg #$index=$arg"
let "index+=1"
done
echo "所有的参数被认为是各个独立的单词"
echo
index=1
echo "Listing args with \$* (未被引用):"
for arg in $*
do
echo "Arg #$index=$arg"
let "index+=1"
done
echo "所有的参数被认为是各个独立的单词"
exit 0
运行后输出为
[Copy to clipboard] [
- ]CODE:[root@localhost ABS]# ./test 1 2 3 4
Listing args with"$*":
Arg #1=1 2 3 4
所有的参数被认为是一个单词
Listing args with "$@":
Arg #1=1
Arg #2=2
Arg #3=3
Arg #4=4
所有的参数被认为是各个独立的单词
Listing args with $* (未被引用):
Arg #1=1
Arg #2=2
Arg #3=3
Arg #4=4
所有的参数被认为是各个独立的单词
相关文章推荐
- shell中$*与$@的区别
- linux系统中关于shell变量$*与$@的区别
- shell中$*与$@的区别
- shell中$@与$*的区别
- shell中$@和$*区别
- shell中$@和$*的区别
- 一个脚本实例浅析shell脚本中$@与$*的区别
- shell脚本中$@与$#区别
- shell中$*与$@的区别
- shell中$*与$@的区别
- Linux Bash Shell $*和$@的区别
- Shell特殊变量:$*和$@的区别
- shell中$*与$@的区别
- linux:Shell中exec、source和shell script的区别
- linux shell 管道命令(pipe)使用及与shell重定向区别
- Perl和Shell区别
- shell 单引号 双引号 反引号区别+反斜杠
- shell 和 Process 控制执行多个进程的区别
- shell中的反引号与$()区别
- shell环境变量以及set,env,export的区别