shell脚本出现莫名其妙的错误!可能是win中的^M 符号导致
2017-10-25 10:35
281 查看
删除win中的^M 符号
注:后来了解到实际网络上已经有成熟的软件dos2unix,如果联网了的话,可以用yum进行安装,yum search dos2unix,我的是centos6.5 64位,直接安装yum install dos2unix.x86_64,我自己还没验证过。
下面的方法就多次一举了!
这个符号是win下的回车换行符,在linux下没有,显示为^M,如果不处理会造成linux读取异常,尤其是是在win下编辑的脚本或者makefile等文件。
网上也有几个删除^M的方法,综合对比选择了一种
sed -i 's/^M/"\n"/g' filename 注意:^M需要这样输入 ctrl+v+m
最好用vim打开,然后启动命令:set ff=unix,将文档设置为unix格式
如果可以的话,建议将此命令写成脚本命令,放在/usr/bin目录下作为常用命令,具体实现如下
wtu.sh
!/bin/bash -
# change file from win to linux, some file edit on win will contain ^M,maybe cause linux error
src_file=$1
[ -z $src_file ] && echo "input error file name" && exit 1
sed -i 's/^^M$//g' $src_file #留意 ^和$是锚定开头和结尾的意思,即遇到单独一行只有^M的,直接删除不换行
sed -i 's/^M$//g' $src_file
while [[ 1 ]]
do
grep -q ^M $src_file
[ $? -eq 1 ] && break
sed -i 's/^M/\n/g' $src_file
done
echo ":set ff=unix
:wq"|vim $src_file &> /dev/null
#cp wtu.sh /usr/bin/dostounix
#chmod +x /usr/bin/dostounix
测试了一下基本可以用,由于本人能力也有限,不足之处欢迎指正。
注:后来了解到实际网络上已经有成熟的软件dos2unix,如果联网了的话,可以用yum进行安装,yum search dos2unix,我的是centos6.5 64位,直接安装yum install dos2unix.x86_64,我自己还没验证过。
下面的方法就多次一举了!
这个符号是win下的回车换行符,在linux下没有,显示为^M,如果不处理会造成linux读取异常,尤其是是在win下编辑的脚本或者makefile等文件。
网上也有几个删除^M的方法,综合对比选择了一种
sed -i 's/^M/"\n"/g' filename 注意:^M需要这样输入 ctrl+v+m
最好用vim打开,然后启动命令:set ff=unix,将文档设置为unix格式
如果可以的话,建议将此命令写成脚本命令,放在/usr/bin目录下作为常用命令,具体实现如下
wtu.sh
!/bin/bash -
# change file from win to linux, some file edit on win will contain ^M,maybe cause linux error
src_file=$1
[ -z $src_file ] && echo "input error file name" && exit 1
sed -i 's/^^M$//g' $src_file #留意 ^和$是锚定开头和结尾的意思,即遇到单独一行只有^M的,直接删除不换行
sed -i 's/^M$//g' $src_file
while [[ 1 ]]
do
grep -q ^M $src_file
[ $? -eq 1 ] && break
sed -i 's/^M/\n/g' $src_file
done
echo ":set ff=unix
:wq"|vim $src_file &> /dev/null
#cp wtu.sh /usr/bin/dostounix
#chmod +x /usr/bin/dostounix
测试了一下基本可以用,由于本人能力也有限,不足之处欢迎指正。
相关文章推荐
- MySQL用source命令执行外部sql脚本文件时出现failed to open file的错误可能之一
- shell脚本执行后出现错误提示" /bin/bash^M: bad interpreter: No such file or dire"的解决办法
- 由于jar包版本不匹配导致整个项目出现莫名其妙的错误影响项目整体进程。
- 如果flash 容易出现ECC 校验错误导致wince 系统不启动,有可能是什么问题呢?
- IE Bug 1 - 错误识别出现在javascript脚本中的字符串,导致HTML标签解析错误
- 有可能导致HttpQueryInfo 执行时出现12150 错误的一个原因
- shell脚本----调试脚本时候出现Syntax error: "(" unexpected错误解决
- 程序内存不足,导致可能出现的错误有哪些?
- sh执行shell脚本出现语法错误
- SYSVOL 共享后的最近 24 小时内出现了警告或错误事件。 失败的 SYSVOL 复制问题可能导致组策略问题
- shell 脚本执行,出现错误bad interpreter: No such file or directory
- 使用SDL2出现 “error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main 中被引用” 时的可能错误记录
- windows下建立文件的换行符^M导致linux下的shell脚本执行错误的解决方式
- 下面代码出现错误:[下面的框架可能不正确和/或缺失,没有为 kernel32.dll 加载符号] ,请问是怎么回事啊?
- 服务器出现502错误 可能进程过多导致
- cygwin下运行shell脚本出现的错误
- MarteEngine: Win下执行ant脚本build.xml中的exej目标时出现的错误
- url中带特殊符号可能出现编码的错误
- Java执行Shell脚本“No such file or directory” (win->Linux)异常的可能原因
- EXCEL出现“找不到打开时所需运行的宏XL4Poppy,继续运行可能导致错误?