最近在搞集群脚本的时候,遇到一个问题,逻辑是在shell里面wget 一个tar 包,然后解压,只有几行命令,非常简单。

这几行命令单独在terminal执行也没有问题,但是通过集群脚本的方式去执行就会出现问题,仔细看会发现shell在执行的是时候URL的尾巴多了一个符号。

初步猜测可能是字符集惹的祸,比如windows写的shell,问了下确实是win写的脚本。

这个问题的核心是:

Windows下文本文件换行符为CRLF,而Linux下换行符为LF,Linux保留了CR,导致URL末尾多了\r的字符串,然后编码为"%0D"

所以需要在执行脚本的地方针对解释器做优化,兼容不同shell编码。


扫码手机观看或分享: