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

Bash脚本拼接变量时首个变量$code被忽略问题求助

问题诊断与解决方案

看起来你的问题出在$code变量里可能包含了隐藏的回车符(\r),这会导致变量拼接后输出时出现"覆盖"的视觉效果——其实$code的内容是存在的,但\r会把光标移到行首,后面的/$NGINX部分会覆盖掉前面的/src/nginx,看起来就像$code被忽略了。

验证问题

先运行这个命令检查你的脚本文件里是否有Windows风格的换行符(CRLF):

cat -A /usr/local/bin/build-nginx

如果看到code="/src/nginx"^M这样的行(末尾的^M就是回车符),那就能确认问题所在了——你的脚本可能是在Windows环境下编辑后传到Ubuntu服务器的,导致换行符变成了\r\n而不是Unix的\n。

解决方法

方法1:转换脚本的换行符为Unix格式

用dos2unix工具转换脚本(如果没安装,先运行sudo apt install dos2unix):

dos2unix /usr/local/bin/build-nginx

如果没有dos2unix,也可以用sed命令替换掉所有的回车符:

sed -i 's/\r$//' /usr/local/bin/build-nginx

方法2:在脚本内清理变量

如果不想修改脚本文件格式,可以在定义code变量后添加一行清理操作,去掉可能存在的回车符:

code="/src/nginx"
# 去掉变量中的回车符
code=$(echo "$code" | tr -d '\r')

测试验证

修改后重新运行脚本:

sudo bash /usr/local/bin/build-nginx

应该就能得到你预期的输出:

/src/nginx
nginx-1.13.11
/src/nginx/nginx-1.13.11

内容的提问来源于stack exchange,提问作者RVOtakuMike

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:11:17