溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

UNIX/Linux環(huán)境編程必須需要注意的問題總結(jié)

發(fā)布時間:2020-03-01 01:41:23 來源:網(wǎng)絡 閱讀:943 作者:urey_pp 欄目:系統(tǒng)運維

在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,如下圖所示:  
UNIX/Linux環(huán)境編程必須需要注意的問題總結(jié)

則就會出現(xiàn)

UNIX/Linux環(huán)境編程必須需要注意的問題總結(jié)

另一個測試腳本:

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或者文件編輯器來處理,例如下圖所示的設置:

UNIX/Linux環(huán)境編程必須需要注意的問題總結(jié)

UNIX/Linux環(huán)境編程必須需要注意的問題總結(jié)

也可以用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--

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI