Shell脚本-如何不时比较目录的内容

时间:2019-03-17 19:19:29

标签: shell

我有一个脚本,每2秒向我显示一个目录的内容。

现在,我需要更改它,以便如果目录的内容已更改,我将能够做一些事情(例如,回显它已更改)。

我的脚本如下:

#!/bin/bash
MON_DIR="/home/lab"
if [ -d $MON_DIR ] ; then
    echo "Directory exists."
    while true
    do
        echo "Content of directory:"
        ls $MON_DIR
        sleep 2
    done
else
    echo "Directory does not exists." > /dev/stderr
    exit $? > /dev/stderr
fi

1 个答案:

答案 0 :(得分:0)

您的任务听起来像您想尝试watch:它可以定期运行命令并显示其输出。使用其-g (--chgexit)(输出更改时退出),您可以尝试实现所需的功能。我正在考虑(未测试)的路线:

#!/bin/bash
MON_DIR="/home/lab"
if [ -d $MON_DIR ] ; then
    echo "Directory exists."
    while true
    do
        watch -n 2 -g "ls ${MON_DIR}" > /dev/null
        echo "Content has changed."            
    done
else
    echo "Directory does not exists." > /dev/stderr
    exit $? > /dev/stderr
fi

在这里,我禁止输出watch,以确保您能够看到该消息。您也可以用可以更好地终止的方式来代替无限循环(while true):Ctrl + C将终止watch,并且循环将重新启动它。因此,您必须在很短的间隔内点击两次Ctr + C。