You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 23:27:42