|
前言
在window操作系统上使用notepad++开发shell脚本后,使其上传值Linux服务器,在终端执行shell脚本时,报`$'\r''错误,详细如下
[root@localhost soft]# sh auto56.sh
auto56.sh: line 12: syntax error near unexpected token `$'\r''
'uto56.sh: line 12: `function GeneralConfig()
[root@localhost soft]# 问题分析
原因
报错原因是因为脚本window操作系统和Linux操作系统换行符的编码不一样。
在Linux终端随便创建一个文件,假如内容并有换行符,检查如下:
Linux服务器上的换行符是 $
[root@localhost soft]# cat -A test.txt
a$
b$
c$
[root@localhost soft]# 检查在window编辑后上传至服务器的脚本,发现换行符是 ^M$,如下:
[root@localhost soft]# cat -A auto56.sh
#!/bin/bash^M$
# Check if user is root^M$
if [ $(id -u) != "0" ]; then^M$
echo "Error: Please use Root to Install"^M$
exit 1^M$
fi^M$
clear^M$
... ...综上,window操作系统的换行字符集编码和Linux操作系统下的换行字符集编码不一致。
解决方案
在Linux服务器上使用dos2unix命令转换文件格式,若dos2unix命令不存在,需自行安装。
dos2unix命令安装指令:
yum -y install dos2unix转换文件格式,指令如下:
[root@localhost soft]# dos2unix auto56.sh
dos2unix: converting file auto56.sh to Unix format ...
[root@localhost soft]# 再次检查文档,换行符以改为 $
[root@localhost soft]# cat -A auto56.sh
#!/bin/bash$
# Check if user is root$
if [ $(id -u) != "0" ]; then$
echo "Error: Please use Root to Install"$
exit 1$
fi$
clear$ |
|