shell脚本兼容linux/unix与windows/cygwin的基础 :统一文本格式为:unix文本格式,即于LF为换行符(推荐方案)
在notepad上设置:编辑->档案格式转换->转换为UNIX格式
另外我觉得在自己使用的编辑器上显示回车、换行符也许是个好的习惯吧
 
有关于回车,换行的故事:转送门在这里,猛击吧!http://blog.sciencenet.cn/blog-948919-697160.html
 
关于回车换行问题,我的”痛苦“经历(传递的字符串参数有\r字符)
 
原由:我需要cygwin下运行shell 脚本;脚中调用python子脚本且同时传递参数
我的脚本内容是这样的(调用的python脚本中会打印传递给他的参数)
===============================================
#!/bin/sh
# ============================
# funcion:
# autor:luogw
# date:2013/6/27
# usage(in cygwin): ./checkCompatibility checedFileName(.csv format) newFileName(.csv format,Added Compatibility problem)
# ============================
tempFileName='temp4Compatibility.csv'
rm -f temp4Compatibility.csv
python ./cleanPath.py $1 $tempFileName
python ./checkNew.py temp4Compatibility.csv $2 filter.csv filter_key.csv
rm -f $tempFileName
================================================
运行情况如下:大家请注意 tempFileName的值,传给python脚后!添加了\r\r

 
我们先看看脚本windows文档格式与unix文档格式载图,显示回车换行符;notepad的设置 : 视图->显示字符->显示所有字符
 
windows格式(出问题时脚本的状态)

unix格式(ok的状态)

 
个人理解:
在cygwin/类unix环境下运行的脚本,如果shell脚本是于windows文档格式保存的(有回车,换行符)
因为unix环境下shell会把回车符"\r"当普通的字符处理,故会造成字符串追加。

 
 
 
另外windows文档格式的shell脚本,在linux/unix环境下运行时是会出现:bash: ./checkCompatibility.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录 (解决方案就是去掉回车了,转给unix文档格式)
但是cygwin环境下是可以正常运行的,很变恋吧,但想想它本身实现就是在windows下提供类unix的运行环境,它能处理windows文档格式的shell脚本也是不可厚非的事
只是得需要注意我今天所遇到的问题

shell脚本兼容linux/unix与windows/cygwin的基础(注意处理好CR, LF, CR/LF 回车 换行的问题)的更多相关文章

  1. 170509、文本编辑器编写的shell脚本在linux下无法执行的解决方法

    今天碰到一个奇怪的问题,编写好的shell脚本再linux上执行一直提示找不到文件或目录,后来想想是文本编辑器的问题,记录下来!!! 1.查看当前文本格式 Notepad++界面中,在右下角有文件格式 ...

  2. Shell脚本查看linux系统性能瓶颈(转)

    Shell脚本查看linux系统性能瓶颈(转自:http://blog.51cto.com/lizhenliang/1687612) [root@test ~]# cat show_sys_info. ...

  3. Shell脚本对Linux进行文件校验

    Shell脚本对Linux进行文件校验 一.需求 有客户等保需求对文件一致性进行校验,想到利用md5sum工具,因此写脚本来对文件进行自定义扫描,后期可以利用其进行校验,快速校验文件发现变更的文件,一 ...

  4. shell 脚本在linux中的应用

    shell脚本在linux中应用广泛,之前一直选用python写脚本来进行一些文件操作,但是最后发现shell脚本非常方便,所以特意来学习下皮毛,便于提高自己效率 定义变量 1 country=&qu ...

  5. shell脚本计算Linux网卡流量

    本文介绍了计算linux网卡流量的一个shell脚本,一个通过固定间隔时间获取ifconfig eth0 的字节值而计算出网卡流量的方法,有需要的朋友参考下. 使用shell脚本计算Linux网卡流量 ...

  6. 查看当前支持的shell,echo -e相关转义符,一个简单shell脚本,dos2unix命令把windows格式转为Linux格式

    /etc/shells [root@localhost ~]# more /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bi ...

  7. 关于windows下编写的shell脚本在linux下无法运行报错问题

    首先,你写的shell脚本必须是正确的, 其次,无法运行的原因:因为windows下的换行是两个字节,而你上传到linux,linux下换行是两个字节,所以编译的酒不正确的,导致无法 运行脚本, 这种 ...

  8. Shell获取Aix/linux/unix机器上db2和os的信息并上传到指定服务器

    (之前写过一篇类似的文章,当时传输文件用的是ftp,因为项目觉得ftp不够安全所以这次换成了scp,同时对脚本的一些地方也做了一些调整) 其实做这个东西还是因为项目的需求,需要获取某些机器(目前主要是 ...

  9. 使用Shell脚本对Linux系统和进程资源进行监控

    ShellLinux脚本 摘要:Shell语言对于接触Linux的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口.本文我们以Bash做为实例总结了使用Shell对系统和进 ...

随机推荐

  1. mongodb操作之使用javaScript实现多表关联查询

    一.数据控制 mongodb操作数据量控制,千万控制好,不要因为操作的数据量过多而导致失败. 演示一下发生此类错误的错误提示:

  2. Django查询的琐碎记录

    我的需求是这样的,获取指定用户的获“赞”总数. 用户 models.py class UserProfile(models.Model): user = models.OneToOneField(Us ...

  3. leetcode第18题--Letter Combinations of a Phone Number

    Problem: Given a digit string, return all possible letter combinations that the number could represe ...

  4. 使用Windows2003创建AD服务器 - 进阶者系列 - 学习者系列文章

    Windows 2003的AD功能不是很强,但是还是提供了不错的功能.下面简要介绍下Windows 2003的AD配置说明. 1.  从添加删除Windows组件安装AD功能项 2.  完成安装.这里 ...

  5. [置顶] EasyMock的简单使用

    EasyMock总览 下面,我将讲述如何使用JUnit和EasyMock框架来进行单元测试. 在现实情况下,我们通常是在一些类里使用另外的一些类.在进行真正的测试之前,你可能需要做很多的工作,比喻说安 ...

  6. python包

    有个伟人说过: python的学习很大一部分取决与你对第三方包的熟悉和掌握程度! virtualenv virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够: ...

  7. ASP.NET(支持 ASP.NET MVC)性能优化包 - combres 介绍

    项目地址:https://github.com/buunguyen/combres Overview Combres (previously hosted in CodePlex) helps you ...

  8. noip模拟赛:电话时间[字符串]

    [问题描述] 某人总是花很多时间给父母打电话.有一次他记录了打电话的开始时间和结束时刻t1和t2,请你帮他算算此次通话一共用了多少秒.又有一次,他记录了打电话的开始时刻t1和通话的时间长度len,请你 ...

  9. YSlow的性能测试提示

    Add an Expires or a Cache-Control Header tag: server There are two aspects to this rule: For static ...

  10. cocos2d-x 实现跨平台的目录遍历

    可能各位看官们有更好的方法,请不吝赐教. #ifdef _WIN32 #include <io.h> #else #include <unistd.h> #include &l ...