这个错误是由于Windows系统和Linux系统的不同编码造成的。Windows下的回车是\r\n,而Linux下的回车是\n,所以用shell远程编写的脚本中的回车不被Linux系统识别,但使用vim编辑的时候还看不到\r。
解决方法:用vim编辑脚本文件时加上-b,即vim -b filename,这样打开的文件是"Binary mode",可以看到多出来的东西,显示的是^M,删掉保存运行就行了。
出现原因:
脚本是在Windows下编辑完成后上传Linux上执行的,Windows下的换行是回车符+换行符,也就是\r\n,而Linux下是换行符\n。Linux下不识别\r为回车符,所以导致每行的配置都多了个\r,因此是编码的问题。
解决方案:
方案一
sed -i ‘s/\r//’ 脚本名
方案二
yum -y install dos2unix
dos2unix 脚本名
在Linux下执行程序最省事的方式就是将系统的执行流程封装成一个shell脚本,上传到linux环境中后就可以直接执行了,但是今天在具体实施的时候出现了错误 $'\r': command not found,一直灭有解决,查询了相关的资料后才发现了问题,最根本的问题就是在Windows下换行的“\r”到了Linux环境下不能够识别了,因为Linux环境下默认的换行符为“\n”,这里就需要做一点修改的工作才可以了。
我选择的解决方案是借助于dos2unix插件的转化功能来完成这个工作,进入Linux环境下安装该组件:
apt install dos2unix
以脚本test.sh为例来讲解使用方法:
chmod 755 test.sh
dos2unix test.sh
./test.sh
非常简单的使用,学习记录一下。
、、
shell脚本执行报错 invalid option
执行shell 脚本报错信息如下:
解决办法步骤如下:
用vim 打开脚本 ,发现脚本格式为doc ,则需要将脚本格式转为unix
使用vim 修改格式
:set fileformat=unix
1
- 在保存退出
:wq
1
就完美解决啦