sh脚本的dos和unix

最近集群迁移,新给的客户端执行sh,报错,找到了一篇很好的文章:http://blog.chinaunix.net/uid-20621895-id-196639.html

虽然很简单,但是之前都不知道这些查看命令,学习了:

在执行shell脚本时提示这样的错误主要是由于shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识。
  查看脚本文件是dos格式还是unix格式的几种办法。
(1)cat -A filename  从显示结果可以判断,dos格式的文件行尾为^M$,unix格式的文件行尾为$。
(2)od -t x1 filename 如果看到输出内容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,则是unix格式。
(3)vi filename打开文件,执行 : set ff,如果文件为dos格式在显示为fileformat=dos,如果是unxi则显示为fileformat=unix。

解决方法:
(1)使用linux命令dos2unix filename,直接把文件转换为unix格式
(2)使用sed命令sed -i "s/\r//" filename  或者 sed -i "s/^M//" filename直接替换结尾符为unix格式
(3)vi filename打开文件,执行 : set ff=unix 设置文件为unix,然后执行:wq,保存成unix格式。(本次我采用了这种方式,很好使)

sh脚本的dos和unix

时间: 2024-10-02 08:26:04

sh脚本的dos和unix的相关文章

dos下编辑过sh脚本后无法运行

情景: 同样的的脚本,在不同的机器下运行有的可以成功,有的运行失败, 前提:sh脚本windos下编辑过. 脚本在windows上修改之后,在每行尾部多了个 ^M,导致sh脚本在执行的时候可能shbang解析不了,导致脚本执行不了 报错 Syntax error: "(" unexpected (expecting "then") 语法解析错误 解决: 在Linux查看^M,需要使用如下命令: vim下 :e ++ff=unix % 去掉^M的方法: 1.在 Vim

sh脚本异常:bad interpreter: No such file or directory

转:http://bluedest.iteye.com/blog/1674963 在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory. 分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息. 解决:1)在windows下转换: 利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行.转

sh脚本异常

/bin/sh^M:bad interpreter: No such file or directory 在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory. 分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息. 解决:1)在windows下转换: 利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再

[shell编程] sh脚本异常:/bin/sh^M:bad interpreter: No such file or directory

转载地址:http://www.cnblogs.com/pipelone/archive/2009/04/17/1437879.html 在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory. 分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息. 解决:1)在windows下转换: 利用一些编辑器如UltraEdit或EditP

执行sh脚本文件下载Github上的代码(雷霄骅的ffmpeg示例代码)

   今天想重新学习下ffmpeg,于是又来到了雷晓骅的博客,先下载了他的所有代码,这里记录一下在Windows上使用sh脚本下载GitHub上代码的过程. CygWin(最后并没有用到)    可以在Windows系统上使用Unix终端的工具,在运行Windows的同时也可以使用vi,bash,tar等Unix下的工具. 使用CygWin执行sh脚本提示'\r'未找到的命令,因为在dos/window下按一次回车键实际上输入的是"回车(CR)"和"换行(LF)",

文本的两种格式---dos和unix

本文虽然题目是这样写的,但是并不仅仅有这两种.至少我还知道另外一种,mac格式.不过本文只讨论这两种,另外一种可参考这两种做出处理. 今天看了一个脚本,完全都没有问题,但是就是运行不过去.总是提示    syntax error near unexpected token `$'\r''   令人百思不得其解.其实看了字面的意思也能大致明白错误的原因.但是不知道解决的办法.幸好有度娘. 其实问题的根源作于文本格式,在我一直纠结的过程中却忽略掉了一个重要的问题. dos文本格式  :   换行是\

dos与unix文件格式之间的转换

1. VI编辑器中转换 在VI中使用命令 set ff?(fileformat)可以查看文件的格式,使用set ff=dos(unix)可以设置文件的格式 2.使用sed处理(来至http://www.cnblogs.com/yangyh/archive/2011/08/12/linux.html) Sed命令笔记 Tag:linux sed 正则 替换 DOS/Windows和Linux/Unix的文件换行回车格式不同,基于 DOS/Windows 的文本文件在每一行末尾有一个 CR(回车)和

SED单行脚本快速参考(Unix 流编辑器)

------------------------------------------------------------------------- SED单行脚本快速参考(Unix 流编辑器) 2005年12月29日 英文标题:USEFUL ONE-LINE SCRIPTS FOR SED (Unix stream editor) 原标题:HANDY ONE-LINERS FOR SED (Unix stream editor) 整理:Eric Pement - 电邮:pemente[at]no

强制关闭tomcat sh脚本

shutdown-force.sh解决tomcat无法正常关闭需要手动kill问题. 把shutdown-force.sh放到tomcat/bin目录下,强制关闭tomcat: cd tomcat/bin ./shutdown-force.sh sh脚本内容: set fileformat=unix #!/bin/bash #by lym6520 2014-11-08 #force shutdown tomcat,copy this sh file to tomcat/bin dir path=