之前为了方便访问文件已经将远程的Linux开发板的目录挂载到了本地的Windows系统,现在想用qt调用一个脚本给开发板发指令,想着直接在Windows上用notpad编辑一下吧,如下图
结果不出意外的话就出意外了,我在开发板上跑qt程序调用脚本的时候,出现了下面的报错
纳尼我这不就点个灯吗为啥还会报错,我看报错信息的时候敏锐发现了\r,如果我没记错的时候是回车换行的意思吧,难道是因为格式问题?
然后我就去Linux文件目录下cat了一下,不是我寻思这也没问题呀,这不和notpad一样
本着我俩只能活一个他不死我死的心态,我接着vi看了一下,好家伙不看不知道一看吓一跳
你小子你就,你......
解决方法显而易见在Linux里面重新编辑一下呗(直接把行末这个奇怪的东东删掉保存)
果然可以啦没有报错了!
然后又去查了一下,Linux和Windows换行符的问题
如果脚本是在 Windows 上编辑的,那么可能使用的是 CRLF
(\r\n
)作为换行符,而 Linux 使用的是 LF
(\n
)。因此,在 Linux 上运行时,换行符会导致命令解析错误。
原来如此,这就是报错里面\r乱入的原因。
这个小插曲也告诉我们tradeoff,将Linux目录挂载到Windows固然好操作,但是也存在着编辑文件格式出现问题的风险;很多时候不能想当然,不能想当然觉得这样做没毛病,试一逝不出意外的话就要出意外了。