【问题标题】:Bash script to run if HTML has changed如果 HTML 已更改,则运行 Bash 脚本
【发布时间】:2021-08-02 05:58:45
【问题描述】:

我写了一个.sh脚本,首先下载一个页面的源代码,然后执行一个Rscript只有当下载的源代码与后者不同时。该页面每天更新一次,URL 以实际日期结尾。这一切都在服务器上,一个 cron 作业将每 15 分钟运行一次 .sh。所以我这样做:

#!/bin/bash

lwp-download "https://geodes.santepubliquefrance.fr/GC_indic.php?lang=fr&prodhash=de1751e6&indic=type_hospit&dataset=covid_hosp_type&view=map2&filters=sexe=0,jour="$(date '+%Y-%M-%d') download.html
md5 page.html > last_md5
diff previous_md5 last_md5
if[ "$?" = "!" ] ; then
        Rscript myscript.R
fi
mv last_md5 previous_md5
rm page.html

第一个问题,即使 download.html 已下载且未更改,它仍会继续运行 R 脚本。 另外,在 R 脚本运行后我遇到了错误"Syntax error: "fi" unexpected"

【问题讨论】:

  • 我建议将!替换为1
  • 并在if[ 中添加一个空格,使其变为if [ - 这解释了您遇到的语法错误。
  • 错字? download.html(已下载)与 page.html(用于检测更改)?
  • 您的程序是否在计算MD5 的总和,称为md5?在我的机器上它被称为md5sum,但我想这可能会有所不同。
  • 好的,再次感谢@TedLyngmo

标签: html bash shell curl


【解决方案1】:

一些问题:

  • 您需要在 if[ 之间添加一个空格 - 或者您可以直接使用 if command; then

  • 你在错误的文件上计算了 MD5 和。

  • 您删除了错误的文件。

由于您可能对查看 MD5 和的实际差异不感兴趣,我建议您使用 cmp -s 而不是 diff

还请注意,我也引用了$(date ...) 命令。在这种特殊情况下没有必要,但它让 linter 很高兴。

#!/bin/bash

lwp-download "https://geodes.santepubliquefrance.fr/GC_indic.php?lang=fr&prodhash=de1751e6&indic=type_hospit&dataset=covid_hosp_type&view=map2&filters=sexe=0,jour=$(date '+%Y-%M-%d')" download.html

md5 download.html > last_md5

if ! cmp -s previous_md5 last_md5; then
    Rscript myscript.R
    mv last_md5 previous_md5
else
    rm last_md5
fi

rm download.html

【讨论】:

  • 谢谢。同样,我不确定我是否会在其中包含 md5。它似乎工作虽然
【解决方案2】:

你应该在if和[之间留一个空格。

#!/bin/bash

lwp-download "https://geodes.santepubliquefrance.fr/GC_indic.php?lang=fr&prodhash=de1751e6&indic=type_hospit&dataset=covid_hosp_type&view=map2&filters=sexe=0,jour="$(date '+%Y-%M-%d') download.html
md5 page.html > last_md5
diff previous_md5 last_md5
if [[ "$?" = "!" ]] ; then
        Rscript myscript.R
fi
mv last_md5 previous_md5
rm page.html

如果您没有看到任何错误,我还建议您使用任何在线 lint 来指导您解决问题

https://www.shellcheck.net/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2013-11-25
    • 2022-10-24
    相关资源
    最近更新 更多