2012-10-25 45 views
0

我正在編寫一個讀取屬性文件的shell腳本&通過某些操作。Shell腳本:單獨閱讀屬性文件的第一行,形成其餘行

它是從prop文件的第一行讀取的。

現在在這個腳本中,我想添加一個開關,如果ENABLED將執行該腳本並執行常規操作。

如果DISABLED不能正常退出程序。 我想把這個swich放在同一個prop文件中。 (即現在的道具文件的第一行會被啓用或禁用)

目前我使用:

cat init_token.properties | while read line 

現在這之前,我想分別讀取開關&的值,那麼如果ENABLED,while read line應該從屬性文件的第二行開始。 簡而言之,我想分割閱讀Ist行,然後其餘的。

init_token.properties的格式:

ENABLED 
abc.dat IP 120.210.60.1 
xyz.dat PORT 8200 
pqr.dat IP 420.24012.4 

腳本:

#!/bin/ksh 

dos2unix init_token.properties & 

# PATH for DAT files 
DAT_FILE_PATH='.' 

cat init_token.properties | while read line 
do 
     #  PARAMETER EXAMPLE - <FILENAME> <ATTRIBUTE> <VALUE> 
     #  read FILENAME 
     FILENAME=`echo "$line" | awk -F " " '{print $1}'` 
     #  read ATTRIBUTE 
     ATTRIBUTE=`echo "$line" | awk -F " " '{print $2}'` 
     #  read VALUE 
     VALUE=`echo "$line" | awk -F " " '{print $3}'` 
     #  setting fully qualified filepath name & temporary file 
     FULLPATH=$DAT_FILE_PATH"/"$FILENAME 
     TEMP_FILE=tempfile 
     old='$('$FILENAME'_'$ATTRIBUTE')' 
     #  replace $(<FILEANME>_<ATTRIBUTE>) with VALUE if file exists 
     if [ -e $FULLPATH ] 
     then 
       sed 's/'$old'/'$VALUE'/g' $FULLPATH > $TEMP_FILE && mv $TEMP_FILE $FULLPATH 
     else 
       echo 'File '$FULLPATH' does not exists while replacing token '$old 
     fi 
done 
exit 

回答

2

這樣的事情,也許呢?

let CNTR=0 

    cat init_token.properties | while read line 
    do 
      let CNTR=CNTR+1 

      if [ $X == 1 ]; then 
       //is first line 
      else 
       //is not first line 
      fi 

      #  PARAMETER EXAMPLE - <FILENAME> <ATTRIBUTE> <VALUE> 
      #  read FILENAME 
      FILENAME=`echo "$line" | awk -F " " '{print $1}'` 
2

你可以在你的腳本的頂部嘗試是這樣的:

CHECK=$(head -n 1 prop.file) 

if [ "$CHECK" == "DISABLED" ]; then 
    exit 0 
fi 
2

首先,你可以拆分該行與read,所以你不需要使用echo | awk

cat init_token.properties | while read filename attribute value 
do 

下是啓用/禁用/其他檢查:

case "$filename" in 
    ENABLED) ;; 
    DISABLED) exit ;; 
    *) 
     # It's another line, do processing 
     ... 
     ;; 
    esac 
done 

還有一點:不要把dos2unix ...的背景。它可能會比你的腳本運行得更長。只需撥打它&

dos2unix init_token.properties