∗ 和 *和 ∗和@的区别
二者均表示传递给函数或脚本的所有参数,不被双引号包含时,都以 “$1” “
2
"
.
.
.
"
2" ... "
2"..."n” 的形式输出所有参数。
当被双引号包含时,$*会将所有参数作为一个整体,以"$1 $2 …
n
"
的形式输出所有参数;
n"的形式输出所有参数;
n"的形式输出所有参数;@会将各个参数分开,以"$1" “
2
"
.
.
.
"
2" ... "
2"..."n” 的形式输出所有参数。
举例说明
shell脚本如下:
#!/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
在linux中执行如下指令:
./demo4.sh "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