【问题标题】:shell script - interpret codeshell 脚本 - 解释代码
【发布时间】:2012-12-26 14:23:19
【问题描述】:

我只是 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

【问题讨论】:

    标签: php shell


    【解决方案1】:

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

    -s, --silent

    静音或安静模式。不要显示进度表或错误消息。使 Curl 静音。

    由于使用的 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 脚本文件

    【讨论】:

    • 感谢您的解释。请问RESULT行的“curl”和“-s”是什么意思?
    【解决方案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
    

    【讨论】:

    • 否,如果收到“DONE”响应,它会用“Generation Ended”覆盖 $RESULT 并将其写入文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    相关资源
    最近更新 更多