分页: 1 / 2

参数传递走样?

发表于 : 2009-03-24 16:17
daf3707
没事来看看
假如目录里有aa、ab、ac
运行带"a*"参数的脚本

代码: 全选

 ./diy a*
变量$1变成了aa
我本来要在脚本里接收这个"a*"的,现在变了。 :em06
如果目录里没有aa、ab、ac,参数就会被正确传递为"a*"
如何做,才能在即有匹配文件名的同时,又可正确传递这个参数呢。

等你啊 :em11

Re: 参数传递走样?

发表于 : 2009-03-24 16:44
greco
好问题啊,以前都没有用通配符做过参数
1.JPG

Re: 参数传递走样?

发表于 : 2009-03-24 16:49
greco
不过传带 * 的参数还是蛮奇怪的

如果你要 x*

你就传 x就好了

*的通配到shell脚本里面去加咯

Re: 参数传递走样?

发表于 : 2009-03-24 17:03
daf3707
greco 写了:不过传带 * 的参数还是蛮奇怪的

如果你要 x*

你就传 x就好了

*的通配到shell脚本里面去加咯
问题是客户如果输了*呢?而恰好目录下有匹配的文件名,它这样一自动区配,那就搞不明白到底是输入了什么东东了。

Re: 参数传递走样?

发表于 : 2009-03-24 17:20
BigSnake.NET

代码: 全选

./diy 'a*'
这样运行

Re: 参数传递走样?

发表于 : 2009-03-24 17:21
daf3707
BigSnake.NET 写了:

代码: 全选

./diy 'a*'
这样运行
我怕用户懒,不愿意输入'' :em06
大蛇都没办法了,看来只能折中了? :em06

Re: 参数传递走样?

发表于 : 2009-03-24 17:25
BigSnake.NET
daf3707 写了:
BigSnake.NET 写了:

代码: 全选

./diy 'a*'
这样运行
我怕用户懒,不愿意输入'' :em06
大蛇都没办法了,看来只能折中了? :em06
这种事情是 diy 无法控制的, 至少在 bash 下, * 的展开是由 shell 进行的, diy 根本连 ab ac ad 是不是由 a* 展开得到的都不知道.

Re: 参数传递走样?

发表于 : 2009-03-24 17:28
daf3707
嗯,应该是这样的了,那就判断加''没加吧,不加的提示help

Re: 参数传递走样?

发表于 : 2009-03-24 23:12
aerofox
加上"后,"本身也不会传给diy。
在 bash 中可以控制,但不是在 diy 内部,在输入 ./diy a* 之前(比如在 ~/.bashrc中)执行过 set -o noglob 就不扩展了。

Re: 参数传递走样?

发表于 : 2009-03-25 9:01
daf3707
aerofox 写了:加上"后,"本身也不会传给diy。
在 bash 中可以控制,但不是在 diy 内部,在输入 ./diy a* 之前(比如在 ~/.bashrc中)执行过 set -o noglob 就不扩展了。
那它就整个的不扩展了,比如 ls ab*,即使有abc,他也提示 ab*找不到了, :em06
还是多谢 :em01

Re: 参数传递走样?

发表于 : 2009-03-25 9:47
yjcong
为什么不把$1 换成$@ ???????????

Re: 参数传递走样?

发表于 : 2009-03-25 9:49
BigSnake.NET
daf3707 写了:
aerofox 写了:加上"后,"本身也不会传给diy。
在 bash 中可以控制,但不是在 diy 内部,在输入 ./diy a* 之前(比如在 ~/.bashrc中)执行过 set -o noglob 就不扩展了。
那它就整个的不扩展了,比如 ls ab*,即使有abc,他也提示 ab*找不到了, :em06
还是多谢 :em01

扩展了又说走样, 不扩展又说不扩展 =.= ..

Re: 参数传递走样?

发表于 : 2009-03-25 9:50
bones7456
:em04

Re: 参数传递走样?

发表于 : 2009-03-25 11:19
eexpress
传的时候,就老实的带上‘’
虽然bash可以设置不扩展参数,可估计你不会喜欢的。

Re: 参数传递走样?

发表于 : 2009-03-25 11:39
daf3707
不扩展确实不习惯 :em06 用$@比较接近了 :em03