如果 HTML 已更改,则运行 Bash 脚本

时间:2021-05-11 20:37:38

标签: html bash shell curl

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

x = tf.cast(x, "float32")

第一个问题,即使 download.html 已下载且未更改,它仍继续运行 R 脚本。 另外,我在 R 脚本运行后遇到错误 #!/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

2 个答案:

答案 0 :(得分:0)

你应该在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/

答案 1 :(得分:0)

一些问题:

  • 您需要在 if[ 之间放置一个空格 - 或者您可以直接输入 if command; then

  • 您计算了错误文件的 MD5 总和。

  • 您删除了错误的文件。

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

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

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