代码:
exp_send $pass"\n"
发送传递变量值,后跟双引号,换行符,然后是双引号。
我想知道为什么?
如果我不想发送双引号,应如何编码?
答案 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
提供了两个参数,而不是一个参数。前两个选项的行为相同,并在内部编译为相同的字节码序列。