2012-12-26 103 views
4

我只是shell脚本的初学者。我正在阅读我的同事的代码,我不知道下面的代码是什么意思。任何人都可以帮助我了解下面代码的含义,特别是RESULT行。shell脚本 - 解释代码

#!/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

此行RESULT=$(curl -s 127.0.0.1/services/generatereport.php);使用cURL加载资源,在这种情况下,文件generatereport.php更新:它基本上执行命令curl,它从服务器请求一个文件。选项-s是静默模式,以避免任何错误消息或进度条。来自卷边文档:

-s,--silent

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

由于所使用的IP地址是127.0.0.1(本地主机),他只是从文件夹执行文件服务在本地主机。文件的输出存储在变量RESULT中。

下一个if语句[[ "$RESULT" =~ "$ENDRESULT" ]];,比较结果与可变ENDRESULT,这是“DONE”,在这种情况下,生成报告已完成的价值末端,它存储了一句"Generation Ended"在日志文件为“[Date] Generation End End”。

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

在第二种情况下,它存储的generatereport.php在日志文件输出为好,但这次它也要求位于/var/www/ema/services/generate.sh

+0

感谢您的解释。我是否也可以知道RESULT行中“curl”和“-s”的含义? – Bryan

+0

我刚刚更新了有关cURL的更多信息 – aurbano

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 
+0

没有shell脚本文件,如果接收到“完成”响应,它将通过“生成结束”重写$ RESULT并将其写入文件。 –