在编写shell脚本过程中,由于格式和语法问题,可能导致执行脚本不成功。
梳理一些可能的原因如下:
1. No such file or directory没有那个文件或目录
问题分析:
1、将windows 下编写好的SHELL文件,传到linux下执行,提示出错。
2、出错信息:bad interpreter: 没有那个文件或目录。
问题原因:
因为操作系统是windows,在windows下编辑的脚本,所以有可能有不可见字符。脚本文件是DOS格式的
即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A.
解决方法:
可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的
方法一: vim filename
然后用命令 :set ff
可看到dos或unix的字样
如果的确是dos格式的, 那么用set ff=unix写在脚本文件的最后一行,把它强制为unix格式的,然后存盘退出后就可运行。
方法二:通过NodePad++编辑器,转换成Windows,Unix/Linux,Mac系统格式
(1)查看当前文件格式(换行符用的是什么字符)
2. Cannot write to file uldrdate.1.txt不能写入文件
问题分析:
这个报错实在执行sqluldr2.bin导出数据时遇见的,后来发现是因为file参数不识别,默认输入文件是uldrdate.1.txt
解决方法:
最后我是通过把所有参数都写成一行解决的,注:编写shell时,一个命令及其参数建议写成一行,不容易出错