为什么后缀" \ n"在TCL / expect脚本中添加双引号?

时间:2015-06-27 09:29:52

标签: unix tcl expect

代码:

exp_send $pass"\n"

发送传递变量值,后跟双引号,换行符,然后是双引号。

我想知道为什么?

如果我不想发送双引号,应如何编码?

1 个答案:

答案 0 :(得分:3)

这是由于Tcl的general syntax rules。特别是,"字符仅在单词的开头(或{*}之后)特殊,这里不适用。当它不在一个单词的开头(和匹配结束)时,它根本不是特别的。

这意味着:

exp_send $pass"\n"

第二个单词包括pass变量,文字",换行符和另一个文字"的内容的串联。它只是 规则的应用。

要修复,请使用以下方法之一:

exp_send "$pass\n"
exp_send $pass\n
exp_send $pass "\n"

第三个与另外两个不同;它为exp_send提供了两个参数,而不是一个参数。前两个选项的行为相同,并在内部编译为相同的字节码序列。