我正在编写一个shell脚本来读取属性文件& perfroms一些操作。
就是它从prop文件的第一行读取。
现在在这个脚本中我想添加一个开关,如果ENABLED将执行脚本并执行常规操作。
如果DISABLED将以正常方式退出程序。 我想把这个swich放在同一个prop文件中。 (即现在prop文件的第一行将是ENABLED或DISABLED)
目前我正在使用:
cat init_token.properties | while read line
在此之前,我想分别阅读开关和放大器的值。然后,如果ENABLED,while读取行应从属性文件的第二行开始。 简而言之,我想要分割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
答案 0 :(得分:2)
你可以在脚本的顶部尝试这样的事情:
CHECK=$(head -n 1 prop.file)
if [ "$CHECK" == "DISABLED" ]; then
exit 0
fi
答案 1 :(得分:2)
首先,您可以使用read
拆分该行,因此您无需使用echo | awk
:
cat init_token.properties | while read filename attribute value
do
接下来检查ENABLED / DISABLED / other:
case "$filename" in
ENABLED) ;;
DISABLED) exit ;;
*)
# It's another line, do processing
...
;;
esac
done
另一点:不要将dos2unix ...
放在后台。它可能比脚本运行的时间更长。只需在没有&
的情况下调用它:
dos2unix init_token.properties
答案 2 :(得分: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}'`