Bash 检查文件是否已更新
我试图检查一个文件(在本例中为/var/log/messages)是否已在循环中使用“stat”命令进行了更新。然而,由于某种原因,代码从未退出循环并继续运行Bash 检查文件是否已更新,bash,Bash,我试图检查一个文件(在本例中为/var/log/messages)是否已在循环中使用“stat”命令进行了更新。然而,由于某种原因,代码从未退出循环并继续运行 #!/bin/bash check='/var/log/messages' THEN="stat -c %z ${check}" NOW="stat -c %z ${check}" while [ $"NOW" == $"THEN" ] do echo "$NOW" if [ $"NOW" != $"THEN" ]; t
#!/bin/bash
check='/var/log/messages'
THEN="stat -c %z ${check}"
NOW="stat -c %z ${check}"
while [ $"NOW" == $"THEN" ]
do
echo "$NOW"
if [ $"NOW" != $"THEN" ]; then
echo "${check} has been updated."
if
done
对此有何想法?有没有更简单的方法来查看/var/log/messages是否已更改?美元符号需要在引号内
$“…”
是一种用于进行翻译的特殊引用机制,因此,除非您使用的区域设置是现在
和然后
翻译为同一字符串,否则该条件永远不会为真
if [ "$NOW" == "$THEN" ]; then
首先,下面的版本至少执行stat命令以及上面解释的所有更改。您必须考虑的一件事是,除非消息更新的时间少于执行所需的时间,否则当时和现在几乎总是一样的
#!/bin/bash
check='/var/log/messages'
THEN=`stat -c %z ${check}`
NOW=`stat -c %z ${check}`
if [ "$NOW" == "$THEN" ]; then
echo "$NOW"
elif [ "$NOW" != "$THEN" ]; then
echo "$check has been updated."
fi
~
请注意正在执行stat。查看一下,您还需要更新
while
循环中的值(至少)。正确的?祝你好运。另外,你应该使用sleep
在循环中设置一个小延迟。