Bash - 一种观察文件变化的方法?

Ros*_*117 2 macos bash

我目前的解决方案是使用python库看门狗和bash片段(最初从这里获取).

watchmedo shell-command client/js/src/templates/ proto/ --recursive \
  --patterns="*.soy;*.proto" \
  --command="echo \"WATCHMEDO file changed - rebuilding\"; make genfiles;"
Run Code Online (Sandbox Code Playgroud)

基本上我正在观看一些模板文件,然后如果其中一个更改,则自动运行make genfiles.

我想知道是否有办法在纯粹的bash中做到这一点?我宁愿不让所有开发人员都依赖Python库.

我在OSX上.

Jak*_* M. 5

#!/bin/bash

watched_files=$@  # pass watched files as cmd line arguments

if [ -z "$watched_files" ]; then
    echo "Nothing to watch, abort"
    exit
else
    echo "watching: $watched_files"
fi

previous_checksum="dummy"
while [ 1 ]; do
    checksum=$(md5 $watched_files | md5)  # I use Mac so I have `md5`, in linux it's `md5sum`
    if [ "$checksum" != "$previous_checksum" ]; then
        echo "None shall pass!"  # do your stuff here
    fi
    previous_checksum="$checksum"
    sleep 1
done
Run Code Online (Sandbox Code Playgroud)