bash 的一个缺点:
使用eval,循环给变量赋值的时候,如果是下面这种形式,退出后,该值就会丢弃,如下:
cat ${ConfigFile} | while read Record
do
if [ "X${Record}" = "X" -o "X`echo ${Record} | awk '{print substr($0, 1, 1)}'`" = "X#" ]; then
continue
else
RecordLeft=`echo ${Record} | cut -d '=' -f 1 | awk '{ gsub( " ","", $0 ); print }'`
#echo $RecordLeft
RecordRight=`echo ${Record} | cut -d '=' -f 2 | awk '{ gsub( " ","", $0 ); print }'`
#echo $RecordRight
export $RecordLeft=$RecordRight
echo $ORA_USER
#echo "Set parameter name:[$RecordLeft] value:[$RecordRight]"
fi
done
如果使用重定向的话,就会扫除问题,必须使用下面的值进行赋值:
while read Record
do
if [ "X${Record}" = "X" -o "X`echo ${Record} | awk '{print substr($0, 1, 1)}'`" = "X#" ]; then
continue
else
RecordLeft=`echo ${Record} | cut -d '=' -f 1 | awk '{ gsub( " ","", $0 ); print }'`
#echo $RecordLeft
RecordRight=`echo ${Record} | cut -d '=' -f 2 | awk '{ gsub( " ","", $0 ); print }'`
#echo $RecordRight
export $RecordLeft=$RecordRight
echo $ORA_USER
#echo "Set parameter name:[$RecordLeft] value:[$RecordRight]"
fi
done < ${ConfigFile}