近日遇到的linux putty echo重定向转义和无法输出引号等号=的问题总结一下解决办法

换了putty3.2等于号=无法输出的问题迎刃而解,应该是putty3.1的一个bug,putty3.2看起来是已经修复了。

1.引号问题,由于配置文件中有大量的双引号,所以就想echo的时候用单引号包起来,这样就不用给每个双引号做\”这种转义了。
结果执行一半就中断了,百思不得其解,一度以为对于大段文本有长度限制或者换行符是否会导致这种意外中断,但实际不是,仔细研究发现要写入配置文件的这段文本当中有一句注释,就是这句所在的行导致中断,原来注释中有一个单词jack’s pc,杰克的电脑。
好吧,把那个单引号转义即刻,实际发现无法转义,因为单引号引用的文本属于强引用,内部不能有单引号,无论你怎样处理都会被过滤。
而双引号引用的文本属于弱引用,内部可以包含单引号和双引号,转义即可。
最后我的解决方案是使用单引号引用,把那句注释中的单引号删掉以免引起中断,好在这种情况只出现了一个,否则也很头疼,不知道大家写批处理是怎么解决这种问题的。
2等于号=的问题,本以为上面的搞定就没问题了,可是写完配置文件之后,提示解析配置文件失败,打开配置文件发现所有配置项的等于号=都没了,比如:
width=800
height=600
变成了:
widht 800
height 600
我的第一感觉是等于号难道也是echo中的特殊字符?仔细看了文档不是啊,特殊字符只有:\”‘`这4个。但很明显=被过滤掉了。
后来各种百度和google都找不到相关资料,请教了好几位linux群友,他们都表示怎么可能,我感觉应该只有我自己出现这个问题,经过多种尝试和对比,发现同样是putty3.1这个版本在连接centos6上命令行界面根本敲不出=,从文本文档复制的1=1粘贴过来就变成11,自动过滤掉了,但是putty3.1在centos7上一切正常。
开始我以为是centos6的问题,又做尝试,发现同样centos6,putty3.1输不出等号=,但是secureCRT6.0.1就是正常的,可以敲出等号,也可以正常输出等号。于是我就明白了这应该是putty的bug,去官方看看有没有新版试试,果然,换了putty3.2一切问题迎刃而解。

赶紧记录下来,省得以后有同学遇到我同样的问题。