知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

shell脚本兼容linux/unix与windows/cygwin的基础

发布时间:2014-09-05 14:17:51作者:知识屋

shell脚本兼容linux/unix与windows/cygwin的基础
 
在notepad上设置:编辑->档案格式转换->转换为UNIX格式
另外我觉得在自己使用的编辑器上显示回车、换行符也许是个好的习惯吧
关于回车换行问题,我的”痛苦“经历(传递的字符串参数有/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脚本也是不可厚非的事
只是得需要注意我今天所遇到的问题
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜