我想bash脚本执行自己与我的结束任何执行



我想写一个脚本,脚本执行自己当我更新脚本中的任何命令然后它自己必须检查和执行

#!/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将自动从主脚本的帮助下执行,但这个主脚本应该连续运行:(

最新更新