求解,shell中如何正确使用$@
发表于 : 2011-04-28 15:34
脚本 test1.sh 如下,
[speed@localhost ~]$ cat test1.sh
#! /bin/sh
# test1.sh
echo "\$# 传递到脚本的参数的个数为 $#"
echo "\$* 以一个单字符串显示所有向脚本传递的参数为 $*"
echo "\$@ 使用时加双引号,并且在双引号中返回每个参数 $@"
echo "\$@ 返回\$@中每一个参数"
for index in $@
do
echo $index
done
在终端中执行 sh test1.sh 1 2 3 4 5 6 7 8 9 10 11 12,这个结果中遍历显示参数是没有问题的
speed@localhost ~]$ sh test1.sh 1 2 3 4 5 6 7 8 9 10 11 12
$# 传递到脚本的参数的个数为 12
$* 以一个单字符串显示所有向脚本传递的参数为 1 2 3 4 5 6 7 8 9 10 11 12
$@ 使用时加双引号,并且在双引号中返回每个参数 1 2 3 4 5 6 7 8 9 10 11 12
$@ 返回$@中每一个参数
1
2
3
4
5
6
7
8
9
10
11
12
在终端中执行 sh test1.sh "1 a" "2 b" "3 c" "4 d" "5 e" "6 f" "7 g",这个结果中遍历显示参数是有问题,如何解决呢。
如何让遍历显示参数时,显示结果如下呢
1 a
2 b
3 c
4 d
5 e
6 f
7 g
[speed@localhost ~]$ sh test1.sh "1 a" "2 b" "3 c" "4 d" "5 e" "6 f" "7 g"
$# 传递到脚本的参数的个数为 7
$* 以一个单字符串显示所有向脚本传递的参数为 1 a 2 b 3 c 4 d 5 e 6 f 7 g
$@ 使用时加双引号,并且在双引号中返回每个参数 1 a 2 b 3 c 4 d 5 e 6 f 7 g
$@ 返回$@中每一个参数
1
a
2
b
3
c
4
d
5
e
6
f
7
g
[speed@localhost ~]$ cat test1.sh
#! /bin/sh
# test1.sh
echo "\$# 传递到脚本的参数的个数为 $#"
echo "\$* 以一个单字符串显示所有向脚本传递的参数为 $*"
echo "\$@ 使用时加双引号,并且在双引号中返回每个参数 $@"
echo "\$@ 返回\$@中每一个参数"
for index in $@
do
echo $index
done
在终端中执行 sh test1.sh 1 2 3 4 5 6 7 8 9 10 11 12,这个结果中遍历显示参数是没有问题的
speed@localhost ~]$ sh test1.sh 1 2 3 4 5 6 7 8 9 10 11 12
$# 传递到脚本的参数的个数为 12
$* 以一个单字符串显示所有向脚本传递的参数为 1 2 3 4 5 6 7 8 9 10 11 12
$@ 使用时加双引号,并且在双引号中返回每个参数 1 2 3 4 5 6 7 8 9 10 11 12
$@ 返回$@中每一个参数
1
2
3
4
5
6
7
8
9
10
11
12
在终端中执行 sh test1.sh "1 a" "2 b" "3 c" "4 d" "5 e" "6 f" "7 g",这个结果中遍历显示参数是有问题,如何解决呢。
如何让遍历显示参数时,显示结果如下呢
1 a
2 b
3 c
4 d
5 e
6 f
7 g
[speed@localhost ~]$ sh test1.sh "1 a" "2 b" "3 c" "4 d" "5 e" "6 f" "7 g"
$# 传递到脚本的参数的个数为 7
$* 以一个单字符串显示所有向脚本传递的参数为 1 a 2 b 3 c 4 d 5 e 6 f 7 g
$@ 使用时加双引号,并且在双引号中返回每个参数 1 a 2 b 3 c 4 d 5 e 6 f 7 g
$@ 返回$@中每一个参数
1
a
2
b
3
c
4
d
5
e
6
f
7
g