やるしかなっちゃん

やるしかない!

シェルスクリプトでフォルダ監視するやつ

止むにやまれぬ事情があって題名の通りのことをするハメになった

最近はどんなツールにもwatchオプションがあるし、一昔前でもgulp-watch使ってたしまさかこんな原始人みたいなことをするハメになるとは思いもしなかった

#!/bin/bash

# 監視対象のディレクトリ
targets=(/Sample/Example/Dir1 /Sample/Example/Dir1)

# 実行するコマンド
command="ls"

# 変更検知用の配列
prev_sizes=()
for target in "${targets[@]}"; do
  size=`du -bsx $target | awk '{print $1}'`
  prev_sizes+=($size)
done

# 監視間隔
INTERVAL=1

while true; do

  sleep $INTERVAL

  for ((i = 0; i < ${#targets[@]}; i++)) {
      size=`du -bsx ${targets[$i]} | awk '{print $1}'`

      if [ "${prev_sizes[$i]}" != "$size" ]; then
        eval $command
        echo "Changed: ${targets[$i]}"
        echo "Done: $command"

        prev_sizes[$i]=$size
      fi

  }

done

シェルスクリプト全然書いたことないからこれが正しいのかまったくわからない
こんなもの書かなくてもワンライナーでできそうな気もするんだけど圧倒的に力が足りなくてできなかった
無念だ