使用 tail -n0 -F 读取日志文件时出现问题

problems while reading log file with tail -n0 -F

我正在监控星号日志文件以查找脱机的对等方。 if 部分工作正常,但 else 部分未执行 sed 命令,尽管 echo 命令有效。我需要改变什么

tail -n0 -F /var/log/asterisk/messages | \
while read LINE
do
if echo "$LINE" | /bin/grep -q "is now UNREACHABLE!"
then
EXTEN=$(echo $LINE | /bin/grep -o -P "(?<=\').*(?=\')")
echo "$EXTEN is now UNREACHABLE!"
CALLERID=$(/bin/sed -n '/^\['"$EXTEN"'\]/,/^\[.*\]/{/^callerid*/p}' "$SIP" | /usr/bin/awk -F'=' '{ print  }')
if .......
then
  .......
fi
elif echo "$LINE" | /bin/grep -q "is now REACHABLE!"
then
EXTEN=$(echo $LINE | /bin/grep -o -P "(?<=\').*(?=\')")
echo "$EXTEN is now REACHABLE!"
if /bin/grep -qi "^$EXTEN;" $OFFLINE; then
  /bin/sed -i '/^$EXTEN;/d' $OFFLINE
fi
fi
done

您有一个引号问题 - 当字符串包含 shell 变量时您使用了单引号:

if /bin/grep -qi "^$EXTEN;" $OFFLINE; then
  /bin/sed -i '/^$EXTEN;/d' $OFFLINE
fi

尝试改用双引号:

if /bin/grep -qi "^$EXTEN;" $OFFLINE; then
  /bin/sed -i "/^$EXTEN;/d" $OFFLINE
fi