我只是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
答案 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脚本文件