LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1094|回复: 5

大家看看这个问题

[复制链接]
发表于 2005-11-9 12:22:09 | 显示全部楼层 |阅读模式
一个用来测试参数的脚本
[php]
#!/bin/bash
#para.sh : A demo shell for testing for parameters

echo "Aount of parameters: $#"
echo "arameters list: $@"
echo $1
echo $2
exit 0
[/php]

第一次运行结果没有什么异常:
~/coding/test $  ./para.sh para1 para2 para3
Aount of parameters: 3
Parameters list: para1 para2 para3
para1
para2


再次,换个花样:
~/coding/test $  ./para.sh *.c
Aount of parameters: 6 我原本以为应该是1
Parameters list: a1.c a2.c a.c ar.c b.c caller.c 我原本以为应该是 *.c
a1.c
a2.c


很明显,这个脚本运行时把输入的参数(*.c )扩展为当前目录下匹配的文件了,并且更新了$@, $#

我想问的是,能否修改这种默认的行为:也就是说,在具体的运用中,我想原原本本地得到输入
的参数(比如该例中,我期望 $# 是还是1, 而$@则是 *.c)。


谢谢大大帮忙一下! :thank
发表于 2005-11-9 14:56:03 | 显示全部楼层
用单引号引起来,就不能被SHELL扩展了

这个问题,说过几百次了
回复 支持 反对

使用道具 举报

发表于 2005-11-9 15:03:22 | 显示全部楼层
./para.sh \*.c
或者 ./para.sh ‘*.c’   ???不知可否?
回复 支持 反对

使用道具 举报

发表于 2005-11-9 15:06:00 | 显示全部楼层
但是测试echo $1还是会把匹配的全部打出来
回复 支持 反对

使用道具 举报

发表于 2005-11-9 15:06:11 | 显示全部楼层
转义一下可以

但不如单引号来的直观
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-9 15:18:13 | 显示全部楼层
不过引号引的办法相当于改变了我的要求。
3x all anyway
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表