我们的开发环境一般都使用windows操作系统,而测试环境和线上环境一般使用linux。windows下编辑的shell脚本,上传到windows下会发生错误。出现两种情况:
  1、BOM头问题,前面有介绍,不再继续
  2、回车符问题。 主要是在windows操作系统下,采用的编辑器(windows自带的文本编辑器或者zend studio)编辑shell脚本,在处理换行的时候,一般会附加一个回车符,在linux环境下运行,这个回车符会影响脚本运行,返回语法错误。

  我们看一下
  首先,我们在windows下编辑一个文本(test00.php),输入下面的内容,之后上传到linux服务器

aaarticlea/png;base64,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" alt="" />

  

  我们用vi打开看一下,似乎没有问题

aaarticlea/png;base64,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" alt="" />

  我们再在linux服务器上直接写一个文件(test11.php)输入同样的内容。但是对比一下,我们可以清晰的看见两个文件的大小是不一样的

[root@localhost test]# ll test*
-rw-rw-r-- root root Mar : test00.php
-rw-r--r-- root root Mar : test11.php

使用xxd去看一下编码情况,做一下对比:

windows下 linux下
:       210d 0a69  it is a test!..i
: 0d0a t is a test!..it
: 210d 0a69 is a test!..it
: is a test!
:       210a   it is a test!.it
: 210a is a test!.it i
: 210a s a test!.it is
: 210a a test!.

我们清晰的看到,windows下编辑的文件上传到linux服务器后,每一次换行符前面(0a)都存在回车符(0d)。

那么怎么解决这个问题呢
方法很多,可以使用dos2unix filename命令解决即可

[root@localhost test]# dos2unix test00.php
dos2unix: converting file test00.php to UNIX format ...
[root@localhost test]# xxd test00.php
: 210a it is a test!.it
: 210a is a test!.it i
: 210a s a test!.it is
: a test!
[root@localhost test]#

windows编辑文本和unix编辑文本的回车符问题的更多相关文章

  1. 去除windows编辑文本中的回车符

    情景描述: 最近,huskiesir的朋友遇到了一个很奇葩的问题.那就是他在windows上搭建了一个http服务,把A脚本放在了上面并用linux去下载和执行,但是在执行的时候出现了问题,在linu ...

  2. HTML:<input type="text">文本框不可编辑的方式

    1.<input type="text" name="name" value="姓名" disabled /> 该方式显示的文本 ...

  3. Swing文本域的编辑

    1..setEditable(false); 设置文本域不可编辑 2..setHorizontalAlignment(JTextField.CENTER); // 设置文本的水平对齐方式 有效值包括: ...

  4. 限制可编辑div只能输入纯文本

    本博客转载自张鑫旭大神的一篇文章:小tip: 如何让contenteditable元素只能输入纯文本,原文地址:http://www.zhangxinxu.com/wordpress/2016/01/ ...

  5. sed - 文本三剑客之编辑功能

    sed - stream editor for filtering and transforming text Sed是一个流编辑器.流编辑器用于对输入流(文件或管道输入)执行基本的文本转换.虽然在某 ...

  6. Unity3D 之UGUI 文本框和编辑框

    这里来讲解一下unity3D自带的UI功能,自带的UI也叫UGUI功能非常的强大,比起NGUI,更加的灵活,让用户能够更加容易的去使用. 首先创建一个文本Text 然后是文本相对应的属性 这里的属性比 ...

  7. 背水一战 Windows 10 (29) - 控件(文本类): RichTextBlock, RichTextBlockOverflow, RichEditBox

    [源码下载] 背水一战 Windows 10 (29) - 控件(文本类): RichTextBlock, RichTextBlockOverflow, RichEditBox 作者:webabcd ...

  8. 【Windows 10 应用开发】细说文本资源文件(resw)

    最近,小戏骨版<红楼梦>很是火热,老周一口气看完了9集,一直看到 Surface 的风扇呼呼响.林黛玉和薛宝钗这两个角色都演得不怎么样,倒是演史湘云的娃娃演得不错,老周甚是喜欢. 于是,昨 ...

  9. linux tr命令实现windows文本格式与linux文本格式间的转换

    tr 命令 转换和删除字符 选项: -d --delete:删除字符 -s --squeeze-repeats:把连续重复的字符以一个字符表示,即去重 -c –C --complement:取字符集的 ...

随机推荐

  1. [项目构建 十三]babasport Nginx负载均衡的详细配置及使用案例详解.

    在这里再次说明下, 这个项目是从网上 找到的一套学习资料, 自己在 空闲时间学习了这些东西. 这里面的code当然会有很多不完善的地方, 但是确实也能学到很多新东西.感谢看过这一些列博文和评论的小伙伴 ...

  2. BZOJ 1015 [JSOI2008]星球大战starwar

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 3551  Solved: 1581[Submit ...

  3. TRAFFIC LIGHTS POJ 1158

    题目大意: 在Dingilville 城市安排是一种不同寻常的方式,每个交叉路口有一条道路连接,一条道路最多连接两个不同的交叉路口.每个交叉路口不能连接他自己.道路旅行一端到另一端的时间是相同的,任何 ...

  4. Balanced Binary Tree——LeetCode

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  5. C# 实现3Des加密 解密

    3Des对每个数据块进行了三次的DES加密算法,是DES的一个更安全的变形.比起最初的DES,3DES更为安全. 都是感觉一目了然的摘过来. 下面是加密解密的源码.ECB模式的. public cla ...

  6. Linux入门基础 #6:Linux用户基础

    本文出自   http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...

  7. 在SQL Server 中启用 FileStream

    最近在研究在数据库中存储大数据文件,看到了FileStream 这个功能,记录下来以备后用 FileStream 一般在安装的时候默认是不启用的,如果你留意的话,在选择数据库文件路径那个窗口,有一个标 ...

  8. C#获取窗口,模拟按键操作

    C#获取窗口,模拟按键操作,实现计算器模拟操作.首先引用. using System.Runtime.InteropServices; 使用DllImport引入两个函数: // Get a hand ...

  9. Android - Broadcast机制

    以下资料摘录整理自老罗的Android之旅博客,是对老罗的博客关于Android底层原理的一个抽象的知识概括总结(如有错误欢迎指出)(侵删):http://blog.csdn.net/luosheng ...

  10. UVA 11770 Lighting Away

    RunID User Problem Result Memory Time Language Length Submit Time 2482977 zhyfzy J Accepted 0 KB 138 ...