Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
有时候编写脚本时会出现类似标题列出的错误,这个问题大多数是因为你的脚本文件在windows下编辑过。windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,用cat -A urfile时你可以看到这个\r字符被显示为^M,这时候只需要删除这个字符就可以了。可以使用命令sed -i 's/\r$//' urfile 。有时候编写脚本时会出现类似标题列出的错误,这个问题大多数是因为你的脚本文件在windows下编辑过。windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,用cat -A urfile时你可以看到这个\r字符被显示为^M,这时候只需要删除这个字符就可以了。可以使用命令sed -i 's/\r$//' urfile 。
相关推荐
-
shell按行读取文件的3种方法
方法有很多,下面写出三种方法:写法一: 复制代码 代码如下: #!/bin/bashwhile read linedoecho $linedone < filename(待读取的文件) 写法二: 复制代码 代码如下: #!/bin/bashcat filename(待读取的文件) | while read linedoecho $linedone 写法三: 复制代码 代码如下: for line in `cat filename(待读取的文件)`doecho $linedone 说明:for逐行
-
使用Bash Shell对目录中的文件实现递归式拷贝
前言 今天工作中遇到了一个问题,如果将目录A中的文件拷贝到目录B中(前提目录B没有该文件),并保持文件在目录A的结构.项目重点如下: 需要在目录B中保持文件在目录A中的结构.假设A目录文件 A/test/1.txt,转移到目录B中应该是B/test/1.txt.同时还需要考虑目录B中是否存在test目录,多级目录就要考虑递归了.(还好,bash shell里写个目录递归遍历还是比较简单的.) 需要考虑A中文件是否在B中已经存在同名文件,如果存在,则不需要拷贝. 项目需求示例图如下
-
使用Bash Shell检查文件是否存在的方法
前言 大家在工作的时候可能经常会遇到这样的需求,在类Unix系统的Bash环境下,怎样检查文件是否存在呢?既然有需求,当然就有解决的办法了,Shell中的test命令,可以用来检测文件的类型或者比较数值是否相等,该命令也能用来检查文件是否存在. 可以用如下的命令来进行检查: test -e filename [ -e filename ] test -f filename [ -f filename ] 下面的命令,则使用Shell的条件表达式,判断/etc/hosts文件是否存在: [ -f
-
shell去掉文件中空行(空白行)的方法详解
本文详细介绍了使用shell去除文件中的空行的方法,学习下sed.awk.shell文件检测的方法,有需要的朋友可以作个参考. 本节内容:shell去掉文件中空行 1,shell 去掉文件中的空行 复制代码 代码如下: cat filename | sed -e '/^$/d' > filename 2,保留最新的9个文件,其它的文件删除的命令语句 复制代码 代码如下: ls -t | awk '{if(NR>9){print $0}}' |xargs rm -f 附,shell中的特殊变量
-
shell脚本中执行时提示“没有那个文件或目录”的解决办法
出现bad interpreter:No such file or directory的原因,是文件格式的问题.这个文件是在Windows下编写的.换行的方式与Unix不一样,但是在vim下面如果不Set一下又完全看不出来. 问题分析:1.将windows 下编写好的SHELL文件,传到linux下执行,提示出错.2.出错信息:bad interpreter: 没有那个文件或目录. 问题原因:因为操作系统是windows,在windows下编辑的脚本,所以有可能有不可见字符.脚本文件是DOS格式
-
使用Bash Shell获取文件名和目录名的简单方法
前言 还是今天再写一个自动化打包脚本,用到了从路径名中获取最后的文件名.这里记录一下实现过程.当然,最后我也会给出官方的做法.(ps:很囧,实现完了才发现原来Bash Shell有现成的函数) 获取文件名 假设给定的路径名为: /tmp/csdn/zhengyi/test/zhengyi.txt awk解法 用"/"做分隔符,然后打印出最后的那一部分.实现代码如下: resFile=`echo /tmp/csdn/zhengyi/test/adb.log | awk -F "
-
Shell逐行读取文件的4种方法
在Linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的脚本里的方法,而且是效率最高,使用最多的方法.为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率. 方法1:while循环中执行效率最高,最常用的方法. 复制代码 代码如下: function while_read_LINE_bottm(){ While read LINE do echo $LINE done < $FILENAME } 注释:我习惯把这种方式叫做read釜底抽薪,因为这种方
-
Shell脚本统计文件行数的8种方法
获取单个文件行数 文件:test1.sh 行数:20 方法一 复制代码 代码如下: awk '{print NR}' test1.sh|tail -n1 如图所示: 方法二 复制代码 代码如下: awk 'END{print NR}' test1.sh 如图所示: 方法三 复制代码 代码如下: grep -n "" test1.sh|awk -F: '{print '}|tail -n1 如图所示: 方法四 复制代码 代码如下: sed -n '$=' test1.sh 如图所示: 方
-
判断文件是否存在的shell脚本代码
实现代码一. #!/bin/sh # 判断文件是否存在 # link:www.jb51.net # date:2013/2/28 myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x "$myPath"]; then mkdir "$myPath" fi # 这里的-d
-
使用bash shell删除目录中的特定文件的3种方法
我是一名Linux新用户.现在我需要清理一个下载目录中的文件,其实我就是想从-/Download/文件夹删去除了以下格式的文件外所以其它文件: 1.*.iso - 所有的iso格式的文件. 2.*.zip - 所有zip格式的文件. 我如何在一个基于Linux,OS X 或者 Unix-like 系统上的bash shell中删除特定的文件呢? Bash shell 支持丰富的文件模式匹配符例如: 1.* - 匹配所有的文件. 2.? - 匹配文件名中的单个字母. 3.[...] - 匹配封闭括
随机推荐
- 微信小程序 navbar实例详解
- javascript数组随机排序实例分析
- VC++的combobox控件用法汇总
- iOS直播类APP开发流程解析
- JavaScript切换搜索引擎的导航网页搜索框实例代码
- 简介JavaScript中fixed()方法的使用
- Asp.Net网站优化系列之数据库的优化措施与索引优化方法
- 浅谈PHP面向对象之访问者模式+组合模式
- PHP判断字符串长度的两种方法很实用
- PHP网页游戏学习之Xnova(ogame)源码解读(十四)
- MySQL中Binary Log二进制日志文件的基本操作命令小结
- 禁止JS运行的代码
- the sourcesafe database has been locked by the administrator之解决方法
- java中Servlet Cookie取不到值原因解决办法
- VBS教程:方法-Write 方法
- javascript 使用正则test( )第一次是 true,第二次是false
- jQuery中dequeue()方法用法实例
- jQuery实现可关闭固定于底(顶)部的工具条菜单效果
- 详解Android_性能优化之ViewPager加载成百上千高清大图oom解决方案
- C#序列化与反序列化(Serialize,Deserialize)实例详解