windows到linux上回车字符的问题
来源:互联网 发布:手机淘宝页头图片 编辑:程序博客网 时间:2024/05/19 16:37
编写shell脚本时,我们经常习惯在windows下写好,然后通过共享目录拷到linux下,方便快捷。
杯具的事也来了,当我们在windows写一个shell程序拷到linux中,修改好权限,正准备试下效果时,
/bin/bash^M: 坏的解释器: 没有那个文件或目录
/bin/bash^M: <wbr>坏的解释器: <wbr>没有那个文件或目录
什么情况?
这跟系统有关。脚本文件在windows下编辑过,windows下每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,
用cat -A filename时你可以看到这个\r字符被显示为^M
#!/bin/bash^M$
^M$
#Program:^M$
^M$
# ip scanner ^M$
^M$
#Author:^M$
^M$
# wangzhe^M$
^M$
#Time:^M$
^M$
# 2012-9-1^M$
^M$
#eaxmple:sh scanner.sh 192.168.1.101^M$
^M$
^M$
^M$
network=$(echo $1 | cut -d. -f1-3)^M$
^M$
^M$
^M$
for i in $(seq 1 254)^M$
^M$
do^M$
^M$
ping -c 1 -w 1 $network.$i > /dev/null ^M$
^M$
if [ $? -eq 0 ]; then ^M$
^M$
arp $network.$i | grep ":" | awk '{print $1,$3}' ^M$
^M$
echo "host $network.$i is up"^M$
^M$
else ^M$
^M$
echo "host $network.$i is down"^M$
^M$
fi^M$
^M$
done^M$
PS:cat -A 什么意思?
A就是all的意思,就是所有的都显示出现,也就是说\n\r默认是不显示的。
这时候只需要删除这个字符就可以了。
怎么删掉呢?
正则表达式sed -i 's/\r$//'filename
什么意思呢?
-i插入
s替代模式
\r$表示任何以\r结束的字符
整句意思是把以\r结束的字符换成空白
现在再运行就没这个问题了。
杯具的事也来了,当我们在windows写一个shell程序拷到linux中,修改好权限,正准备试下效果时,
/bin/bash^M: 坏的解释器: 没有那个文件或目录
/bin/bash^M: <wbr>坏的解释器: <wbr>没有那个文件或目录
什么情况?
这跟系统有关。脚本文件在windows下编辑过,windows下每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,
用cat -A filename时你可以看到这个\r字符被显示为^M
#!/bin/bash^M$
^M$
#Program:^M$
^M$
# ip scanner ^M$
^M$
#Author:^M$
^M$
# wangzhe^M$
^M$
#Time:^M$
^M$
# 2012-9-1^M$
^M$
#eaxmple:sh scanner.sh 192.168.1.101^M$
^M$
^M$
^M$
network=$(echo $1 | cut -d. -f1-3)^M$
^M$
^M$
^M$
for i in $(seq 1 254)^M$
^M$
do^M$
^M$
ping -c 1 -w 1 $network.$i > /dev/null ^M$
^M$
if [ $? -eq 0 ]; then ^M$
^M$
arp $network.$i | grep ":" | awk '{print $1,$3}' ^M$
^M$
echo "host $network.$i is up"^M$
^M$
else ^M$
^M$
echo "host $network.$i is down"^M$
^M$
fi^M$
^M$
done^M$
PS:cat -A 什么意思?
A就是all的意思,就是所有的都显示出现,也就是说\n\r默认是不显示的。
这时候只需要删除这个字符就可以了。
怎么删掉呢?
正则表达式sed -i 's/\r$//'filename
什么意思呢?
-i插入
s替代模式
\r$表示任何以\r结束的字符
整句意思是把以\r结束的字符换成空白
现在再运行就没这个问题了。
0 0
- windows到linux上回车字符的问题
- Windows上通过程序写入回车字符
- 关于linux下项目移植到windows上的问题
- linux下不按回车如何读取字符&&读取到字符不回显
- windows上的java web项目移植到Linux上遇到的问题
- windows 和linux 回车符号转换问题
- windows 和linux 回车符号转换问题
- 回车换行在不同浏览器上字符数不一致的问题
- Windows 平台下编辑文本复制到Linux下后,中文字符出现乱码的问题
- Windows 上的Oracle 迁移到Linux上的方法
- 转载:windows tomcat项目迁移到Linux上的配置与注意问题
- Java windows项目迁移到linux上,遇到一些跟路径相关的问题
- Linux和Windows下的回车
- Windows WCHAR 到 Linux wchar_t 字符类型的转换
- Windows WCHAR 到 Linux wchar_t 字符类型的转换
- Linux下查看是否有回车字符(回车换行问题):
- 关于linux和windows的CR, LF, CR/LF 回车 换行问题
- Windows上的字符转换
- Say Hello To Android Studio【android studio 安装步骤概述】
- main(int argc,char *argv[ ],char *env)参数详解
- 历届试题 网络寻路
- 访问控制器的方法
- Codeforces Round #297 (Div. 2)
- windows到linux上回车字符的问题
- 详解C#中MessageBox消息框
- 面试题
- OpenGL编程逐步深入(三)在窗口中显示一个三角形
- 历届试题 大臣的旅费
- 四层负载均衡和七层负载均衡的区别
- angular-leaflet 小例
- 排队规则网卡青涩瞬间
- Codeforces Round #170 (Div. 2)