我有一个脚本,每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
答案 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。