2014-11-06 43 views
0

我需要编写一个脚本,告诉给定网站(第一个参数)是否已更改。我写了类似的东西,但它不工作,不能让发现错误Bash脚本。检查网站是否有效

#!/bin/bash  

website=$1 
time=$2 #frequency of checking the page 
x=1 
spr=$(diff -s ttt.txt ttt1.txt) 
lynx -dump $website | cat > ttt.txt ttt1.txt 
until [ 1 -eq 0 ]; do 
    sleep $2 
    lynx -dump $website | cat > ttt1.txt 

     if [ "$(diff -s ttt.txt ttt1.txt)" = "$spr" ] 
     then 
      lynx -dump $website | cat > ttt.txt 
      echo "Changes were made " 

     else 
      echo "No changes" 

     fi 
done 
+0

它以什么方式不起作用?你有错误吗?是不报告更改?始终报告更改?还有其他的东西吗?同样,通过'cat'管道是毫无意义的,你可以直接从'lynx'重定向到文件。 – 2014-11-06 20:29:10

+0

它永远不会回应变化。 – user3478498 2014-11-06 20:37:45

+0

您希望''diff -q'或'cmp -s'用于记录的更改测试。没有必要将输出与任何其他输出进行比较。这些文件在脚本启动时有什么值(即'$ spr'的值是多少?)? – 2014-11-06 20:42:05

回答

0

这条线的问题是:

lynx -dump $website | cat > ttt.txt ttt1.txt 

因为您提供的重定向后2个文件,外壳认为这:

cat ttt1.txt >ttt.txt 

所以,猫是从ttt1.txt从标准输入读取,


演示:

$ cat > a <<END 
hello 
END 
$ cat > b <<END 
world 
END 
$ echo foo | cat > a b 
$ cat a 
world 
$ cat b 
world 

“FOO” 不存储到任何文件。