sh react是一个linux bash脚本,用于递归监视文件修改并在发生更改时执行bash命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh react是一个linux bash脚本,用于递归监视文件修改并在发生更改时执行bash命令相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env bash
# script:  react (renamed from conflicting 'watch' command)
# author:  Mike Smullin <mike@smullindesign.com>
# contributor: Mike Kormendy <mike@somethinginteractive.com>
# license: GPLv3
# description:
#   watches the given path for changes
#   and executes a given command when changes occur
# usage:
#   watch <path> <cmd...>
#

path=$1
shift
cmd=$*
sha=0
update_sha() {
  sha=`ls -lR --time-style=full-iso $path | sha1sum`
}
update_sha
previous_sha=$sha
react() {
  echo -en " reacting...\n\n"
  $cmd
  echo -en "\n--> resumed watching."
}
compare() {
  update_sha
  if [[ $sha != $previous_sha ]] ; then
    echo -n "change detected,"
    react
    previous_sha=$sha
  fi
}
trap react SIGINT
trap exit SIGQUIT

echo -e  "--> Press Ctrl+C to force reaction, Ctrl+\\ to exit"
echo -en "--> watching \"$path\""
while true; do
  compare
  sleep 1
done

以上是关于sh react是一个linux bash脚本,用于递归监视文件修改并在发生更改时执行bash命令的主要内容,如果未能解决你的问题,请参考以下文章

linuxshell 脚本执行的过程是怎样的?

Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别

为啥linux 的 source命令在linux的脚本中没有作用 我使用了#!/bin/sh以及#!/bin/bash 都不好用

sh watch是一个linux bash脚本,用于递归监视文件修改并在发生更改时执行bash命令

[shell]Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别

shell脚本报错:-bash:/bin/sh^M: bad interpreter: