2014-11-06 39 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」 不存儲到任何文件。