问题解决: 解释器错误: 没有那个文件或目录
执行一个我写的 perl 脚本,命令行报错:
/usr/bin/perl^M: 解释器错误: 没有那个文件或目录
分析: UNIX和Linux使用“ ”换行,而Windows用“ ”(不是 ,已验证). 推测脚本文件在windows下编辑过。用 sed 命令把每行末尾的 去掉。
解决: sed -i s/ $// filename
解释一下,-i 表示 edit files in place,直接修改原来的文本 s/a/b/ 表示把 a 替换成 b $表示“结束位置” 所以上面命令的意思是:如果一行以 结尾,就把 替换为空,也就是去掉它。
有人问,不是以 结尾吗?
使用 standard sed,您将看不到换行符。这是因为 sed 逐行读取,因此在 sed 模式空间中,当前行文本的末尾没有换行符。换句话说,sed 读取以换行符分隔的数据,并且分隔符不是 sed 脚本所见内容的一部分。
所以, 作为分隔符了,所以每行的末尾就是 。
参考资料
下一篇:
C++定义不能被继承的类