一、$@ 和 $* 介绍
在shell中,$* 表示把所有的参数看成一个整体,而$@ 表示把每个参数区分对待
二、$@ 和 $*案例比较
$*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数。
- 编写脚本
#!/bin/bash
for i in $*
do
echo "wo shi $i "
done
for j in $@
do
echo "wo shi $j"
done
2. 进行测试
[laozheng@linux2 bin]$ ./for.sh 1 2 3 4
wo shi 1
wo shi 2
wo shi 3
wo shi 4
wo shi 1
wo shi 2
wo shi 3
wo shi 4
我们可以发现不管是$*,还是$@,实际上都打印了4遍
但是当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数
- 编写脚本
#!/bin/bash
for i in "$*"
do
echo "wo shi $i "
done
for j in "$@"
do
echo "wo shi $j"
done
2. 进行测试
[laozheng@linux2 bin]$ ./for.sh 1 2 3 4
wo shi 1 2 3 4
wo shi 1
wo shi 2
wo shi 3
wo shi 4
我们可以清楚的发现"$*"将1 2 3 4作为一个整体返回,而"$@"则是将输入参数作为多个个体返回