shell脚本 - 解释代码

时间:2012-12-26 14:23:19

标签: php shell

我只是shell脚本的初学者。我正在读我的同事的代码,我不知道下面代码的含义是什么。任何人都可以帮助我解释下面代码的含义,特别是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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

此行RESULT=$(curl -s 127.0.0.1/services/generatereport.php);正在使用cURL加载资源,在本例中为文件 generatereport.php UPDATE:它基本上执行命令curl,它从服务器请求文件。选项-s是静默模式,以避免任何错误消息或进度条。从curl文档:

  

-s, - silent

     

无声或安静模式。不显示进度表或错误消息。使卷曲静音。

由于使用的IP地址是127.0.0.1(localhost),因此他只是从localhost中的 services 文件夹中执行该文件。文件的输出存储在变量RESULT中。

下一个if语句[[ "$RESULT" =~ "$ENDRESULT" ]];,将 RESULT 的结尾与变量 ENDRESULT 的值进行比较,该值为“DONE”,在这种情况下,报告生成已完成,并将句子"Generation Ended"存储在日志文件中,如“[Date] Generation Ended ”。

日志文件位于/var/www/ema/services/generate.log

在第二种情况下,它还将generatereport.php的输出存储在日志文件中,尽管这次它还调用位于/var/www/ema/services/generate.sh的shell脚本文件