kshのケース文に一致する構文の正規表現

kshのケース文に一致する構文の正規表現

kshのAIXでサービスを開始または停止しようとしています。

サービスが終了したかどうかを確認するために、愚か者の防止メカニズムの構築を開始しようとしています。

これは私のスクリプトです。

#!/bin/ksh


#################################################################################
#                        PARAMETERS & VARIABLES SECTION                         #
#################################################################################

DBI_LOC="DBI/InstallCollector/dbi_collector/bin"

#Put input option to upper case.
OPTION=$( echo "$1" | tr "[:lower:]" "[:upper:]" )

#################################################################################
#                              FUNCTION SECTION                                 #
#################################################################################

parseresults() {
    typeset RESULT="$1"

    if [ "${OPTION}" = "START" ] ; then
        case "${RESULT}" in 
            *)
                echo "Success"
            ;;
        esac
    else
        case "${RESULT}" in 
            DBI.(Collector is not running))
                echo "Collector is already down. Continuing..."
            ;;
            DBI.(performance data collector shutdown COMPLETE))
                echo "Success shutting down collector. Continuing..."
            ;;
            *)
                echo "Error shutting down the collector. Exiting with error."
                exit 1
            ;;
        esac
    fi
}


#################################################################################
#                             MAIN SCRIPT SECTION                               #
#################################################################################



case "${OPTION}" in
    "START")
        echo "Starting the collectors..."
        RESULT=$(ksh ~/${DBI_LOC}/start_dbi_collector.sh)
        ;;
    "STOP")
        echo "Stopping the collectors..."
        RESULT=$(ksh ~/${DBI_LOC}/stop_dbi_collector.sh)
        ;;
    *)
        echo "Error: No Parameter specified. Must be either start or stop"
        exit 1
        ;;
esac

echo ${RESULT}
parseresults ${RESULT}

echo
echo

2つのDBIフレーズを一致させることができないようです。どちらも停止スクリプトで可能な出力です。私はこれらの成功を検討したいと思いますが、他のものも失敗する可能性があります。

私はまだ正規表現(そしてJavaやkshなどで正規表現がどう違うのか)を学んでいるので、私は不器用なことを許してください。私は何が間違っていましたか?あなたの答えで私のアプローチがうまくいかない理由を説明できますか?正解はうまくいきます。 (他人に釣り方を教えてくれれば私も好き…)

編集する:私の考えには括弧と関連があるようです。同じ停止問題を持つ別のスクリプトがあり、角かっこを削除すると、関数は完全に停止します。だから私のヒントはまだ構文マッチングを行う方法です。

ベストアンサー1

「START」や「STOP」と同様に、一致させたい文字列の周囲に引用符を追加する必要があります。

もしスクリプトは「DBI. (Collector not running)」を出力します。その後、最初のCaseステートメントとして次のものが必要です。

    case "${RESULT}" in 
        "DBI.(Collector is not running)")

おすすめ記事