尽可能简单。
我希望这个脚本在名为“out.log”的日志文件中捕获一条说“hello”的行。 我遇到的问题是它总是将“echo表达式评估为false”作为输出,即使我知道日志文件包含我想要的行
#!/bin/bash
SERVICE_HOME="home/username/Desktop/SMX3test"
CURRENT_USER=`whoami`
start=0
NULLPOINT=out.log
OUT=hello
LINES=20
if [ 'tail -n $LINES $NULLPOINT | grep hello' = "$OUT" ];
then
echo expression evaluated as true
else
echo expression evaluated as false
fi
exit $start
有提示或解决方法吗?
/呼
#我明白了! ##
#预最终代码:
#!/bin/bash
############################
# Phew's Start/stop script #
############################
SERVICE_HOME="opt/data/log/ls/smx3/"
CURRENT_USER=`whoami`
start=0
NULLPOINT=servicemix.log
OUT=NullPointerException
LINES=20
REV=$(tail -n $LINES $NULLPOINT | grep NullPointerException)
if [ $REV = "$OUT" ];
then
/etc/init.d/ls-smx3 stop && sleep 300 && /etc/init.d/ls-smx3 start
else
echo "Allting är okej!"
fi
exit $start
#####
#END#
#####
答案 0 :(得分:2)
您可以这样做:
if tail -n $LINES $NULLPOINT | grep hello >/dev/null; then
echo expression evaluated as true
else
echo expression evaluated as false
fi
你不必真正匹配这个词(除非你明确地想要这个,所以你应该修剪' \ n'并确保'你好'它' ;那是该行唯一的事情。)
答案 1 :(得分:1)
要获取命令的输出,您应该使用$()这样的
包围它A=$(uname)
echo $A
相当于
A=`uname`
echo $A