51Testing软件测试论坛

标题: TCL的老鸟来看看 [打印本页]

作者: crazystone    时间: 2007-5-25 12:38
标题: TCL的老鸟来看看
昨天刚上了TCL,老师讲了"\["可以置换,如:
%set b \[expr \2 + 3]↓
结果是:%[expr 2 + 3].
但是我在学习中碰到了一个问题:
%set a 1
%1
%set b 2
%2
%set [expr $a + $b\]
没有结果,而且前面的%没了,怎么弄也弄不出来,必须关掉重新进来才行
这是不是一个Bug呢?还是一个隐藏的命令?因为它什么错误提示都没有,有办法解决吗?
作者: MarsNoNo    时间: 2007-5-25 14:40
很有趣的现象!我把你这段代码写成了文件,用source执行,提示错误为:miss close-bracket,缺少括号.
至于是什么问题,我也不太明白。我先冒充一下老鸟吧,“\”是置换相当于C中的转义,我是这样理解的,TCL中的“[”和空格这两个字符是特殊字符(能算成系统保留的吧?!)所以,你需要得到这些字符的时候,就需要进行转义了,但是“]”并不是特殊字符,在它之前使用“\”,就把它给屏蔽掉了,所以会提示“缺少括号”,但是在编辑器中执行上面的代码后,提示符没了,后面输入什么都没用,除了“Ctrl+C”哈哈……,重新进编辑器才行。希望真正的老鸟来解决一下这个问题。因为我也是菜鸟,静候佳音了!
p.s.:LZ,如果编辑器不能提供出错信息的话,那换个方式就能得到这个错误信息了。
作者: MarsNoNo    时间: 2007-5-25 15:00
再说一点点,就一点点,沙发没坐热,再把椅子也抢了,sdlkfj3
LZ,如果你真要得到“[expr $a + $b\]”的输出,可以这样写代码的:
set c \[expr\ $a + $b\\]
用两个置换,OK了!
作者: lhjtc8257    时间: 2007-5-25 19:49
我也碰到的
你输入
%set a 1
%1
%set b 2
%2
%set [expr $a + $b\]   等于在输入一行(也就是说不换行)

只要输入个 “ ] ” 然后回车就可以了
我的理解是,当“ ] ”前面是“ \ ”的时候,“ ] ”被认为是一个字符,对于程序而言缺少个结束标志“ ] ”,
所以。。。

(随便问下,你是19期的那位啊,ME TOO)

[ 本帖最后由 lhjtc8257 于 2007-5-25 21:04 编辑 ]
作者: MarsNoNo    时间: 2007-5-25 22:43
3楼的,解惑了,受教!!!!谢谢。
作者: songfun    时间: 2007-5-26 19:53
呵呵,其实不是bug。
\]  实际上把 这个“右耳朵括号”置换走了,而 他的“左耳朵括号”并没有偶被你置换,所以出现了那个现象。
就像楼上的同学说的那样 sdlkfj2


原帖由 crazystone 于 2007-5-25 12:38 发表
昨天刚上了TCL,老师讲了"\["可以置换,如:
%set b \[expr \2 + 3]↓
结果是:%[expr 2 + 3].
但是我在学习中碰到了一个问题:
%set a 1
%1
%set b 2
%2
%set [expr $a + $b\]
没有结果,而且前 ...

作者: crazystone    时间: 2007-5-26 21:17
那么多人帮忙真好~~~我明白了~真名保密




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2