guaf 发表于 2010-3-23 14:18:40

请教一个cmud的alias问题

原zmud中,抓取一个任务地点存入变量@where,然后设置一个alias,#alias go {@where},命令中直接使用这个alias go就可以走到任务地点(alias预先做好),但是在cmud中直接用go 只是显示出变量@where的内容,确不执行,请问什么原因?哪位能指点一下,谢谢!

guaf 发表于 2010-3-23 15:36:00

原帖由 seagate 于 2010-1-24 09:23 PM 发表
其实我用cmud以后发现#exec命令处理变量会产生许多许多问题。最好的办法是
#alias alias1 @var1
#alias +0.5 {alias1}
因为alias1产生需要一定时间所以给个延迟比较好。这样执行大命令串也没问题。
否则我以前常 ...

看到这篇,解决了,再去学习一下,时间控制的问题!

bluse 发表于 2010-3-23 16:15:02

#exec自身有一个问题,就是无法执行#字头的系统指令。包括#wa。
因为系统分析input首先分析#,解析出#exec自身就是#字头的指令,对#exec后的内容,并不采取解析input的环节(非递归调用),因此无法识别#字头的指令

[ 本帖最后由 bluse 于 2010-3-23 04:20 PM 编辑 ]

guaf 发表于 2010-3-23 16:33:28

Thanks!
糖果教程回复中有这样一篇:
原帖由 sghjjj 于 2010-1-14 11:41 PM 发表


在721中,对于将变量的值直接作为命令执行,按语法错误来处理的,不是像555那样灵活
所以像@temp2就造成了语法错误,在721中应该用#exec @temp2
另外也还有很多跟555中不一样的地方

如果不用#exec,其他还有没有方法?
另外我在721中,直接将变量的值做命令执行,好像也可以的?

seagate 发表于 2010-3-23 21:38:05

#exec执行内部命令比如#wa都能执行,但是#exec的问题是执行命令太长的话会容易出问题。
原因就不清楚了。
所以我都是用#alias a1 @var;然后稍微延迟执行a1,这样子可以执行足够复杂的命令。
而且给变量赋值也很简单。

lzkd 发表于 2010-3-23 21:42:39

zeze 幸福呀,嘿嘿。。我学mush的时候,怎么就没人这么教我

guaf 发表于 2010-3-23 21:46:25

我的主要问题是,以变量值做为命令,不能执行。
根据seagate的讲解,如果变量值是一个alias的名称,这个alias做的比较长,那用#exec就会出问题了。

seagate 发表于 2010-3-23 21:57:29

你可以#alias a1 @var把变量转换成alias,直接执行alias就不会有问题了。你执行#exec是用他来执行变量,变量太复杂#exec就有极低概率会发傻!也就是说最好不要#exec @var。

guaf 发表于 2010-3-23 22:03:01

学习了,多谢指导!
页: [1]
查看完整版本: 请教一个cmud的alias问题