您好,登錄后才能下訂單哦!
在UNIX/Linux下編程必須需要注意一下幾點問題(特別是在運行于Windows上的IDE或編程工具進行開發(fā)):
1.大小寫問題。
在文件或目錄的命名規(guī)則中,特別注意駝峰命名法的大小寫區(qū)分問題。有些語言的內(nèi)部變量或者引用方面同樣也是。
2.權限問題。
不要任意操作文件系統(tǒng),換句話說,不要動與自己無關的任何文件(UNIX/Linux下一切都是文件),特別是新部署或者應用中要生成新文件時將權限先查看清楚
3.關于unix文件編碼問題的再次強調(diào)
在運行于Windows上的IDE或編程工具進行開發(fā)時特別注意,保存文件時一定要將dos文件格式(file format)轉(zhuǎn)化成unix文件格式。
dos文件格式中換行符為\r\n
unix文件格式中換行符為\n
現(xiàn)在vim和awk對此有了改進,能自動識別,而grep還不能很好的識別,因此一旦用grep這樣的工具就會導致出現(xiàn)未知的后果。
附:針對文件格式做的一些測試:
#!/bin/bash #chkconfig: 345 86 14 #description: Startup and shutdown script for ChatterServer(Port:$SERVICEPORT)) #SERVICEPORT=29093 #SERVICEPORT=`grep ^port $(pwd)/../conf/constant.properties | awk -F '=' '{print $2}'` PORTFILE=$(pwd)/../conf/constant.properties #SERVICEPORT=$(cat $PORTFILE | grep ^port | awk -F '=' '{print $2}') SERVICEPORT=$(cat $PORTFILE | dos2unix | grep ^port) echo "SUCCESS: ChatterServer(Port:$SERVICEPORT) is OK"
上面的constant.properties文件的fileformat如果為dos,如下圖所示:
則就會出現(xiàn)
另一個測試腳本:
cat >./portfile<<eof port=1080 eof PIDFILE=./portfile cat $PIDFILE #SERVICEPORT=$(grep ^port $PORTFILE | awk -F '=' '{print $2}') #grep ^port $PORTFILE | awk -F '=' '{print $2}' # VS cat $PIDFILE | grep ^port | awk -F '=' '{print $2}' SERVICEPORT=$(cat $PIDFILE | grep ^port | awk -F '=' '{print $2}') echo $SERVICEPORT echo "SUCCESS: ChatterServer(Port:$SERVICEPORT) is OK"
針對上面的文件格式問題,可以用IDE或者文件編輯器來處理,例如下圖所示的設置:
也可以用vim中的:set ff=unix轉(zhuǎn)換,也可以用dos2unix這樣的工具轉(zhuǎn)換,如下面的腳本所示:
# NOTE: $(pwd)/../conf/constant.properties file fileformat must be unix NOT dos in shell scripts, or will cause some unknown error # NOTE: grep is vrey sensitive to dos fileformat or unix fileformat # apt-get install dos2unix PORTFILE=$(pwd)/../conf/constant.properties SERVICEPORT=$(cat $PORTFILE | dos2unix | grep ^port | awk -F '=' '{print $2}')
--end--
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。