一、问题产生
从windows写好的shell脚本上传到linux,执行报错如下:
二、问题分析
有可能是由于编码问题导致的
使用 cat -A
命令查看隐藏字符:
不可见字符干扰: 脚本文件可能包含 Windows 换行符
CRLF
(\r\n
),在 Linux 中被识别为 ^M
,导致路径被截断(如 /proc/...
显示为 c/...
)。说明文件格式需要转换。
三、问题解决
转换文件格式
使用 dos2unix
工具清除 Windows 换行符:
sudo apt install dos2unix
dos2unix cleanCache.sh
或手动替换(如果不想安装工具):
sed -i 's/\r//g' cleanCache.sh
再次执行,正常!