歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> shell腳本兼容linux/unix與windows/cygwin的基礎

shell腳本兼容linux/unix與windows/cygwin的基礎

日期:2017/3/1 16:14:36   编辑:SHELL編程
shell腳本兼容linux/unix與windows/cygwin的基礎 在notepad上設置:編輯->檔案格式轉換->轉換為UNIX格式 另外我覺得在自己使用的編輯器上顯示回車、換行符也許是個好的習慣吧 關於回車換行問題,我的”痛苦“經歷(傳遞的字符串參數有\r字符) 原由:我需要cygwin下運行shell 腳本;腳中調用python子腳本且同時傳遞參數 我的腳本內容是這樣的(調用的python腳本中會打印傳遞給他的參數) =============================================== #!/bin/sh # ============================ # funcion: # autor:luogw # date:2013/6/27 # usage(in cygwin): ./checkCompatibility checedFileName(.csv format) newFileName(.csv format,Added Compatibility problem) # ============================ tempFileName='temp4Compatibility.csv' rm -f temp4Compatibility.csv python ./cleanPath.py $1 $tempFileName python ./checkNew.py temp4Compatibility.csv $2 filter.csv filter_key.csv rm -f $tempFileName ================================================ 運行情況如下:大家請注意 tempFileName的值,傳給python腳後!添加了\r\r 我們先看看腳本windows文檔格式與unix文檔格式載圖,顯示回車換行符;notepad的設置 : 視圖->顯示字符->顯示所有字符 windows格式(出問題時腳本的狀態) unix格式(ok的狀態) 個人理解: 在cygwin/類unix環境下運行的腳本,如果shell腳本是於windows文檔格式保存的(有回車,換行符) 因為unix環境下shell會把回車符"\r"當普通的字符處理,故會造成字符串追加。 另外windows文檔格式的shell腳本,在linux/unix環境下運行時是會出現:bash: ./checkCompatibility.sh: /bin/sh^M: 壞的解釋器: 沒有那個文件或目錄 (解決方案就是去掉回車了,轉給unix文檔格式) 但是cygwin環境下是可以正常運行的,很變戀吧,但想想它本身實現就是在windows下提供類unix的運行環境,它能處理windows文檔格式的shell腳本也是不可厚非的事 只是得需要注意我今天所遇到的問題
Copyright © Linux教程網 All Rights Reserved