换行符引发的血案

来源:互联网 发布:js.com 编辑:程序博客网 时间:2024/05/01 13:40

最近写shell脚本,遇到变量拼接的问题。

#!/bin/shv1=applev2=pearv3="${v1} ${v2}"echo v3
结果输出"pear",v1的值始终不出来。
尝试了各种办法,包括:

v3="$v1 $v2"

v3=`echo $v1 $v2` ................

apple始终害羞着不出来。

查了很多资料,别人用类似写法,运行结果都正确,而我的运行结果永远都是v2,而且我发现不管拼接了多少个变量,拼接后始终只输出最后一个变量值。

蛋疼,绝望,抓狂。。。。。

无意中在一个帖子上看到类似问题,楼主是在windows下写的shell,然后传到unix上,也是只输出最后变量。楼主也是试了无数方法,最后绝望了,然后干脆在unix服务器上将脚本重写了一遍,然后运行,结果一切正常!

我笑了,因为我也是在windows下写的代码。

用sed -i 's/\r//' filename命令,将代码中的windows换行符替换成unix换行符,运行正常!


原创粉丝点击