0

できるだけシンプルに。

このスクリプトで、「out.log」というログファイルで「hello」と言う行をキャッチしたい..ログファイルに次のものが含まれていることがわかっている場合でも、常に「echo expression evaluates as 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#
#####
4

2 に答える 2

2

次のようなことができます。

if tail -n $LINES $NULLPOINT | grep hello >/dev/null; then
    echo expression evaluated as true
else
    echo expression evaluated as false
fi

実際にその単語に一致させる必要はありません (明示的に一致させたい場合を除き、'\n' を削除して、'hello' だけがその行にあることを確認する必要があります)。

于 2013-05-20T14:17:54.080 に答える