本文共 1296 字,大约阅读时间需要 4 分钟。
shell脚本兼容linux/unix与windows/cygwin的基础 :统一文本格式为:unix文本格式,即于LF为换行符(推荐方案) 在notepad上设置:编辑->档案格式转换->转换为UNIX格式 另外我觉得在自己使用的编辑器上显示回车、换行符也许是个好的习惯吧 关于回车换行问题,我的”痛苦“经历(传递的字符串参数有\r字符) 原由:我需要cygwin下运行shell 脚本;脚中调用python子脚本且同时传递参数 我的脚本内容是这样的(调用的python脚本中会打印传递给他的参数) =============================================== # ============================ # 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 ================================================ 运行情况如下:大家请注意 tempFileName的值,传给python脚后!添加了\r\r 我们先看看脚本windows文档格式与unix文档格式载图,显示回车换行符;notepad的设置 : 视图->显示字符->显示所有字符 在cygwin/类unix环境下运行的脚本,如果shell脚本是于windows文档格式保存的(有回车,换行符) 因为unix环境下shell会把回车符"\r"当普通的字符处理,故会造成字符串追加。 另外windows文档格式的shell脚本,在linux/unix环境下运行时是会出现:bash: ./checkCompatibility.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录 (解决方案就是去掉回车了,转给unix文档格式) 但是cygwin环境下是可以正常运行的,很变恋吧,但想想它本身实现就是在windows下提供类unix的运行环境,它能处理windows文档格式的shell脚本也是不可厚非的事