Shell指令碼編寫可能遇到的問題
阿新 • • 發佈:2018-11-13
在編寫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格式的
方法一:
然後用命令 :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時,一個命令及其引數建議寫成一行,不容易出錯