换行符引发的血案

本文探讨了在Shell脚本中遇到的变量拼接问题,作者最初在Windows环境下编写脚本,但在UNIX环境中运行时出现问题,仅显示最后一个被拼接的变量值。通过替换Windows换行符为UNIX换行符,解决了这一难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

#!/bin/sh
v1=apple
v2=pear
v3="${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换行符,运行正常!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值