1. 程式人生 > >Shell指令碼編寫可能遇到的問題

Shell指令碼編寫可能遇到的問題

      在編寫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)從Windows轉換為Unix/Linux格式

2. Cannot write to file uldrdate.1.txt不能寫入檔案

問題分析:

   這個報錯實在執行sqluldr2.bin匯出資料時遇見的,後來發現是因為file引數不識別,預設輸入檔案是uldrdate.1.txt

解決方法:

      最後我是通過把所有引數都寫成一行解決的,注:編寫shell時,一個命令及其引數建議寫成一行,不容易出錯

參考:http://www.cnblogs.com/xuelei/p/4505097.html