Bash脚本。检查网站是否有效
问题描述:
我需要编写一个脚本,告诉给定网站(第一个参数)是否已更改。我写了类似的东西,但它不工作,不能让发现错误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
答
这条线的问题是:
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” 不存储到任何文件。
它以什么方式不起作用?你有错误吗?是不报告更改?始终报告更改?还有其他的东西吗?同样,通过'cat'管道是毫无意义的,你可以直接从'lynx'重定向到文件。 – 2014-11-06 20:29:10
它永远不会回应变化。 – user3478498 2014-11-06 20:37:45
您希望''diff -q'或'cmp -s'用于记录的更改测试。没有必要将输出与任何其他输出进行比较。这些文件在脚本启动时有什么值(即'$ spr'的值是多少?)? – 2014-11-06 20:42:05