windows下写的脚本,在linux下执行失败

Windows中的换行符为CRLF, 即正则表达式的rn(ASCII码为13和10), 而Unix(或Linux)换行符为LF, 即正则表达式的n. 在Windows和Linux下协同工作的时候, 往往这个细小的差别就导致问题, 如

1)Windows下写的Shell脚本, 在Linux下运行时往往出现rn是无效参数, 不能执行;
2)vi 等编器下打开一个文本文件会包含 ^M
3)Linux下查看文件会在文件头部出现一些乱字符
4)在Windows下开发写的Makefile往往也会运行出错.
…

解决的方法:

1) 文本批量转换工具: Unix系统中的dos2unix(相反的也有unix2dos)
  方法一: 使用 vi 打开源文件, 把 '\r\n' 替换成 '\n'
         ** 缺点 ** : 不适合大量文件的批量作业.
  方法二: 使用 UtraEdit 把 Windows 格式的文件转换成 Unix 格式.
         (菜单)文件-->转换-->Unix转DOS
         ** 缺点 ** : 不适合大量文件的批量作业.
  方法三: Unix 下的 dos2unix 命令, 如 $ dos2unix -k xx.c
         ** 缺点 ** :
         此方法有一致命缺陷, 它会改变原来的文件属性.
         如一个可执行 shell 脚本的可执行属性及其它属性, 转换后都将会丢掉
         (即使用 -k 也只是能保留住原来的日期.)
         ** 优点 ** : 适合大量普通文件本文件的批量作业.
  方法四: win2unix (windows, unix 均可使用), 功能类似 dos2unix,
         如 win2unx xx.c (更多详细实例见后文)
         ** 优点**   :
         克服了 dos2unix 的所有缺点(见上), 它能保留源文件的任何属性.
         还可以返回转换即 unix2win
         适合大量文件的批量作业.

 

2) 在进行编辑或保存的时候, 选择行末符号为Unix换行(LF)
elipse下,回车换行的修改
点击Window >>Workspace 修改 Next text file line delimiter的 Other ,由Windows改为Unix.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值