sh/bash/dash/ksh/zsh等Shell脚本
-
daf3707
- 论坛版主
- 帖子: 12731
- 注册时间: 2007-06-13 15:57
- 来自: 在他乡
#1
帖子
由 daf3707 » 2009-03-24 16:17
没事来看看
假如目录里有aa、ab、ac
运行带"a*"参数的脚本
变量$1变成了aa
我本来要在脚本里接收这个"a*"的,现在变了。
如果目录里没有aa、ab、ac,参数就会被正确传递为"a*"
如何做,才能在即有匹配文件名的同时,又可正确传递这个参数呢。
等你啊
上次由
daf3707 在 2009-03-24 17:05,总共编辑 1 次。
-
greco
- 帖子: 2487
- 注册时间: 2007-04-06 10:24
- 来自: ~/Shanghai
#2
帖子
由 greco » 2009-03-24 16:44
-
greco
- 帖子: 2487
- 注册时间: 2007-04-06 10:24
- 来自: ~/Shanghai
#3
帖子
由 greco » 2009-03-24 16:49
不过传带 * 的参数还是蛮奇怪的
如果你要 x*
你就传 x就好了
*的通配到shell脚本里面去加咯
-
daf3707
- 论坛版主
- 帖子: 12731
- 注册时间: 2007-06-13 15:57
- 来自: 在他乡
#4
帖子
由 daf3707 » 2009-03-24 17:03
greco 写了:不过传带 * 的参数还是蛮奇怪的
如果你要 x*
你就传 x就好了
*的通配到shell脚本里面去加咯
问题是客户如果输了*呢?而恰好目录下有匹配的文件名,它这样一自动区配,那就搞不明白到底是输入了什么东东了。
-
BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
-
联系:
#5
帖子
由 BigSnake.NET » 2009-03-24 17:20
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
daf3707
- 论坛版主
- 帖子: 12731
- 注册时间: 2007-06-13 15:57
- 来自: 在他乡
#6
帖子
由 daf3707 » 2009-03-24 17:21
我怕用户懒,不愿意输入''
大蛇都没办法了,看来只能折中了?
-
BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
-
联系:
#7
帖子
由 BigSnake.NET » 2009-03-24 17:25
daf3707 写了:
我怕用户懒,不愿意输入''
大蛇都没办法了,看来只能折中了?
这种事情是 diy 无法控制的, 至少在 bash 下, * 的展开是由 shell 进行的, diy 根本连 ab ac ad 是不是由 a* 展开得到的都不知道.
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
daf3707
- 论坛版主
- 帖子: 12731
- 注册时间: 2007-06-13 15:57
- 来自: 在他乡
#8
帖子
由 daf3707 » 2009-03-24 17:28
嗯,应该是这样的了,那就判断加''没加吧,不加的提示help
-
aerofox
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
#9
帖子
由 aerofox » 2009-03-24 23:12
加上"后,"本身也不会传给diy。
在 bash 中可以控制,但不是在 diy 内部,在输入 ./diy a* 之前(比如在 ~/.bashrc中)执行过 set -o noglob 就不扩展了。
-
daf3707
- 论坛版主
- 帖子: 12731
- 注册时间: 2007-06-13 15:57
- 来自: 在他乡
#10
帖子
由 daf3707 » 2009-03-25 9:01
aerofox 写了:加上"后,"本身也不会传给diy。
在 bash 中可以控制,但不是在 diy 内部,在输入 ./diy a* 之前(比如在 ~/.bashrc中)执行过 set -o noglob 就不扩展了。
那它就整个的不扩展了,比如 ls ab*,即使有abc,他也提示 ab*找不到了,
还是多谢
-
yjcong
- 帖子: 2470
- 注册时间: 2006-02-28 3:11
#11
帖子
由 yjcong » 2009-03-25 9:47
为什么不把$1 换成$@ ???????????
一梦三年,
松风依旧,
萝月何曾老.
灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
-
BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
-
联系:
#12
帖子
由 BigSnake.NET » 2009-03-25 9:49
daf3707 写了:aerofox 写了:加上"后,"本身也不会传给diy。
在 bash 中可以控制,但不是在 diy 内部,在输入 ./diy a* 之前(比如在 ~/.bashrc中)执行过 set -o noglob 就不扩展了。
那它就整个的不扩展了,比如 ls ab*,即使有abc,他也提示 ab*找不到了,
还是多谢
扩展了又说走样, 不扩展又说不扩展 =.= ..
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#14
帖子
由 eexpress » 2009-03-25 11:19
传的时候,就老实的带上‘’
虽然bash可以设置不扩展参数,可估计你不会喜欢的。
● 鸣学
-
daf3707
- 论坛版主
- 帖子: 12731
- 注册时间: 2007-06-13 15:57
- 来自: 在他乡
#15
帖子
由 daf3707 » 2009-03-25 11:39
不扩展确实不习惯
用$@比较接近了