linux 執行shell腳本的時候,生成的log文件亂碼


腳本執行后,生成的log文件,cat打開沒有問題,vim打開就是文字亂碼。

file1完全沒有問題,其他人的file2追加到file中間的時候就出現了這個問題。

因為使用notepad在win7寫的,通過winscp傳到了linux,

1、所以首先想到可能是notepad的語言問題,於是乎去修改了notepad的編碼格式,嘗試用UTF-8格式,

這樣之后./SHELL 提示  #!/bin/bash no such file or directory

然后在http://unix.stackexchange.com/questions/27054/bin-bash-no-such-file-or-directory 找到了答案,

This can also be caused by a BOM in a UTF-8 script. If you create the script in windoze sometimes you get some junk at the start of the file.

$ head -1 yourscript | od -c

and see how it ends: This is wrong

0000000 # ! / b i n / b a s h \r \n

This is correct:

0000000 # ! / b i n / b a s h \n

用 dos2unix 命令解決這個問題,於是去notepad把編碼改成UTF-8無BOM格式編碼。。

問題沒解決,繼續想、、

2、直接在linux里面 cat file2 >>file1 追加到源文件后面,vim file1后發現追加的file2的部分后面多了 “^M ” 這個東西,

   好吧,這個也要靠 dos2unix 命令 去除: dos2unix file 。

問題依舊存在、、

3、開始用最笨的方法,一個模塊一個模塊的粘貼,發現粘貼完第一個模塊運行是沒有問題的,log文件也沒有問題(好現象,說明這個file2至少有一部分是可以用的,可能只是一部分有問題)。好吧,於是把文件放了sqlserver編輯器打開,瞬間驚呆了,。。。。命令里面摻雜了中文空格(空格君,你咋又來了(>﹏<))。

是個教訓,中文空格帶來的將是毀滅性的災難!!!!!!

問題解決、

 4、運行腳本發現生成了一些錯誤的以“-”開頭的文件,rm -tmpfile 失敗 ,好吧 rm會讀成-t是參數,用 rm ./-tmpfile 就OK了。

 

問題很低級,但是記錄下來就加深了一遍記憶,避免以后犯這種低級錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM