当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 求解,shell中如何正确使用$@
帖子发表于 : 2011-04-28 15:34 

注册: 2007-10-22 22:40
帖子: 125
送出感谢: 0 次
接收感谢: 0 次
脚本 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


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 求解,shell中如何正确使用$@
帖子发表于 : 2011-04-28 16:48 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
要正确使用 $@,就要学会使用双引号。

代码:
for arg in "$@"   # 这里需要双引号
do
    echo "$arg"   # 这里也应该使用双引号
done


其中 echo 语句中的双引号容易被人忽略,而且使用不全面的测试方法时不会发现缺少这个引号有什么问题。


最后由 aerofox 编辑于 2011-04-30 21:56,总共编辑了 1 次

页首
 用户资料  
 
3 楼 
 文章标题 : Re: 求解,shell中如何正确使用$@
帖子发表于 : 2011-04-30 19:28 

注册: 2011-03-01 23:14
帖子: 48
送出感谢: 5
接收感谢: 0 次
呵呵,不加引号是惯常错误~~


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 求解,shell中如何正确使用$@
帖子发表于 : 2011-05-06 14:38 

注册: 2007-10-22 22:40
帖子: 125
送出感谢: 0 次
接收感谢: 0 次
了解 谢谢


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 求解,shell中如何正确使用$@
帖子发表于 : 2011-05-07 15:28 

注册: 2008-10-31 22:12
帖子: 6546
系统: 践兔
送出感谢: 18
接收感谢: 25
chengmoYS 写道:
echo "\$@ 使用时加双引号,并且在双引号中返回每个参数 $@"

你自己都说要加双引号了啊。


_________________
代码:
] ls -ld //


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 求解,shell中如何正确使用$@
帖子发表于 : 2011-05-08 20:06 

注册: 2009-07-25 19:23
帖子: 297
送出感谢: 3
接收感谢: 0 次
pangding 写道:
呵呵,不加引号是惯常错误~~

学习


_________________

Ubuntu 桌面培训- 全中文官方文档,含汉化截图,提供PDF


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译