为什么后缀“\n”在TCL/expect 脚本中添加双引号?
why does suffixing "\n" add the double quotes in TCL/expect script?
代码:
exp_send $pass"\n"
发送传递变量值后跟双引号,换行符然后是双引号。
我想知道为什么?
如果我不想发送双引号,应该如何编码?
这是由于 Tcl 的 general syntax rules。特别是,"
字符仅在单词的开头(或在 {*}
之后,此处不适用)才特殊。当它不在单词的开头(和匹配的结尾)时,它一点也不特别。
这意味着在:
exp_send $pass"\n"
第二个单词由 pass
变量、一个文字 "
、一个换行符和另一个文字 "
的内容串联而成。 只是规则的应用。
要修复,您可以使用其中之一:
exp_send "$pass\n"
exp_send $pass\n
exp_send $pass "\n"
第三个与另外两个不同;它为 exp_send
提供了两个参数,而不是一个。前两个选项在行为上是相同的,并且在内部编译为相同的字节码序列。
代码:
exp_send $pass"\n"
发送传递变量值后跟双引号,换行符然后是双引号。
我想知道为什么?
如果我不想发送双引号,应该如何编码?
这是由于 Tcl 的 general syntax rules。特别是,"
字符仅在单词的开头(或在 {*}
之后,此处不适用)才特殊。当它不在单词的开头(和匹配的结尾)时,它一点也不特别。
这意味着在:
exp_send $pass"\n"
第二个单词由 pass
变量、一个文字 "
、一个换行符和另一个文字 "
的内容串联而成。 只是规则的应用。
要修复,您可以使用其中之一:
exp_send "$pass\n"
exp_send $pass\n
exp_send $pass "\n"
第三个与另外两个不同;它为 exp_send
提供了两个参数,而不是一个。前两个选项在行为上是相同的,并且在内部编译为相同的字节码序列。