Shell脚本中变量自动追加#015字符的问题求助
解决Shell脚本拼接字符串时出现#015字符的问题
兄弟,这个坑我之前踩过!你看到的#015其实是回车符(CR),问题根源出在你的属性文件格式上——大概率是用Windows编辑器保存的,行尾带了CRLF(回车+换行),而Linux/Unix环境下的Shell只认LF(换行),所以读取first_name的时候把末尾隐藏的CR也一起读进来了。单独echo的时候终端会自动处理掉这个CR,但拼接成字符串后它就显形了。
给你几个实用的解决办法:
方法1:把属性文件转成Unix格式
直接修改文件本身,彻底解决问题:
- 如果系统里有
dos2unix工具,直接运行:dos2unix your_properties_file - 没有
dos2unix的话,用sed命令去掉行尾的CR:sed -i 's/\r$//' your_properties_file
方法2:在脚本读取变量时过滤掉CR
不想动原文件的话,可以在读取first_name的时候就把CR去掉:
- 用
tr命令过滤:# 假设你的属性文件名为config.properties first_name=$(grep 'first_name=' config.properties | cut -d'=' -f2 | tr -d '\r') - 或者用bash的参数替换(仅适用于bash环境):
# 读取变量后,去掉末尾的CR first_name=${first_name%$'\r'}
修改后的脚本示例:
first_name=$(grep 'first_name=' config.properties | cut -d'=' -f2 | tr -d '\r') last_name=Sharma name=${first_name} echo "name ${name}" fullname=${first_name}_${last_name} echo "fullname ${fullname}"
执行这个脚本,fullname就会正常输出fullname Ram_Sharma啦!
内容的提问来源于stack exchange,提问作者itsMinij
相关产品推荐
相关产品推荐

