Shell特殊变量:$*和$@的区别
2016-03-30 10:37
573 查看
$* 和 $@ 都表示传递给函数或者脚本的所有参数,不被双引号(" ")包含时,两者效果相同,都以"$1" "$2" … "$n" 的形式输出所有参数。
但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
例如:
执行 ./test.sh "a" "b" "c" "d",看到下面的结果:
$*= a b c d
"$*"= a b c d
$@= a b c d
"$@"= a b c d
print each param from $*
a
b
c
d
print each param from $@
a
b
c
d
print each param from "$*"
a b c d
print each param from "$@"
a
b
c
d
但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
例如:
#!/bin/bash echo "\$*=" $* echo "\"\$*\"=" "$*" echo "\$@=" $@ echo "\"\$@\"=" "$@" echo "print each param from \$*" for var in $* do echo "$var" done echo "print each param from \$@" for var in $@ do echo "$var" done echo "print each param from \"\$*\"" for var in "$*" do echo "$var" done echo "print each param from \"\$@\"" for var in "$@" do echo "$var" done
执行 ./test.sh "a" "b" "c" "d",看到下面的结果:
$*= a b c d
"$*"= a b c d
$@= a b c d
"$@"= a b c d
print each param from $*
a
b
c
d
print each param from $@
a
b
c
d
print each param from "$*"
a b c d
print each param from "$@"
a
b
c
d
相关文章推荐
- SHELL中时间的比较
- 递归遍历目录的shell脚本
- 硬盘故障时无法关机:bash: /sbin/shutdown: Input/output error
- 王晓博 2010.12.22-3-模拟linux shell 终端环境 执行所有shell命令
- Linux bashrc和profile的用途和区别
- shell游戏:扫雷
- 程冬冬 2010.04.28 shell
- Unix Shell 介绍
- shell 编程例子—第9章源码
- XSHELL 绝佳配色方案, 保护你的眼睛
- shell 之基本的运算指令
- SHELL练习题
- dat多重调用bat与powershell
- Linux Shell 管道命令(pipe)的使用
- 只有webshell,一样可以做代理
- adb shell命令
- Shell - 10
- 自动创建和增加内容
- Linux查看磁盘信息(编写shell脚本来分析文件的占用情况)
- 使用xshell完成ssh二次登陆