我想写一个脚本,脚本执行自己当我更新脚本中的任何命令然后它自己必须检查和执行
#!/bin/bash
date
echo ++++++++++++++++++++++++++
df -h
echo +++++++++++++++++++++++++
cat /etc/fsab
echo +++++++++++++++++++++++++
uptime
这是一个例子如果我在脚本中添加任何操作系统信息的命令那么脚本应该自己理解并执行它们自己而不是我自己执行,我知道bash中的命令"-nt"比我尝试的要新,但没有成功
请给出一些建议
我能想到的最简单的事情是:
编写第二个脚本,检查脚本是否更改并执行。也许可以保存脚本的MD5以供比较。
如果您需要这个用于开发:
使用watch
查看输出如何变化
如果您的机器上安装了'inotify-tools',请注意第二个脚本中第一个脚本上的修改事件,然后执行它。第二个脚本可以写成如下:
#!/bin/bash
# Wait for modify event
while inotifywait -e modify /first/script &/dev/null; do
# Execute first script where we add commands
/first/script
done
我找到了问题的答案,这就是解决方案
#!/bin/bash
dd=10
dat=`date '+%H%M'`
until [ $dd -eq 100 ]
do
sleep 1
new=`md5sum script.sh |awk '{print $1}'`
old=`md5sum scriptold.sh |awk '{print $1}'`
if [ "$old" != "$new" ]; then
./script.sh >"loglog.$dat"
cp -pr script.sh scriptold.sh
fi
done
每当我更新script.sh中的任何内容时,script.sh将自动从主脚本的帮助下执行,但这个主脚本应该连续运行:(