4

私はシェルスクリプトの初心者です。同僚のコードを読んでいますが、以下のコードの意味がわかりません。以下のコード、特にRESULT行の意味を教えてください。

#!/bin/bash
DATETIME=$(date);
LOGFILE="/var/www/ema/services/generate.log";
ENDRESULT="DONE";

RESULT=$(curl -s 127.0.0.1/services/generatereport.php);

if [[ "$RESULT" =~ "$ENDRESULT" ]]; then
    RESULT="Generation Ended";
    echo "["$DATETIME"]"$RESULT >> $LOGFILE;
else
    echo "["$DATETIME"]"$RESULT >> $LOGFILE;
    /var/www/ema/services/generate.sh;  
fi

このスクリプトのファイル名はgenerate.sh

4

2 に答える 2

2

私はあなたのためにコードにコメントしました:)

#!/bin/bash
DATETIME=$(date); // Get current date
LOGFILE="/var/www/ema/services/generate.log"; // Where to save data
ENDRESULT="DONE"; // What to expect at the end of data

RESULT=$(curl -s 127.0.0.1/services/generatereport.php); // Request data from PHP running on localhost

if [[ "$RESULT" =~ "$ENDRESULT" ]]; then // If $RESULT ends with "DONE" then log to file that everything is okay;
    RESULT="Generation Ended";
    echo "["$DATETIME"]"$RESULT >> $LOGFILE;
else // Otherwise write down the error and run some other script.
    echo "["$DATETIME"]"$RESULT >> $LOGFILE; 
    /var/www/ema/services/generate.sh;  
fi
于 2012-12-26T14:33:48.040 に答える
2

この行RESULT=$(curl -s 127.0.0.1/services/generatereport.php);は、cURLを使用してリソース (この場合はgeneratereport.phpファイル) をロードしています。更新:基本的には、サーバーからファイルを要求するコマンド curl を実行しています。オプション -s は、エラー メッセージやプログレス バーを回避するためのサイレント モードです。カールのドキュメントから:

-s, --silent

サイレントまたはクワイエットモード。プログレス メーターやエラー メッセージを表示しません。Curl をミュートにします。

使用する IP アドレスは 127.0.0.1 (localhost) であるため、単純に localhost のフォルダーサービスからファイルを実行しています。ファイルの出力は、変数 RESULT に格納されます。

次の if ステートメントは、 RESULT[[ "$RESULT" =~ "$ENDRESULT" ]];の末尾を変数ENDRESULTの値(「DONE」) と比較します。この場合、レポートの生成が終了し、その文を「[Date] Generation Ended」としてログファイルに保存します。 ."Generation Ended"

ログファイルは次の場所にあります。/var/www/ema/services/generate.log

2 番目のケースでgeneratereport.phpは、ログ ファイルにも出力が保存されますが、今回は次の場所にあるシェル スクリプト ファイルも呼び出されます。/var/www/ema/services/generate.sh

于 2012-12-26T14:34:35.873 に答える