2

i have the following bash script:

#!/bin/sh
dir1=/source/dir/path/
while inotifywait -qqre modify "$dir1"; do
   rm -r /destination/dir/path
   find /source/dir/path/ -name .svn -exec rm -rf '{}' \;
   cp -ruv /source/dir/path/* /destination/dir/path/
done

the thing is that the first 2 commands are working well but the process is killed after executing (successfully) the "find -exec" command. Any thoughts?

BTW- if i remove the "find -exec" everything goes well.

Gilles 'SO- stop being evil'
  • 807,993
  • 194
  • 1,674
  • 2,175
Ori Price
  • 207
  • 3
  • 8
  • I'm curious how this works at all. The `inotifywait` man page says it only exits with status 1, 2, or 3. No status 0. Thus the `while inotifywait` should never work as it doesn't exit with status 0. – phemmer May 10 '14 at 22:09
  • well it does work... i was following your link in my other question [link](http://unix.stackexchange.com/questions/128817/is-it-possible-triggering-a-script-with-a-change-of-amount-of-files-in-a-directo) – Ori Price May 10 '14 at 22:28
  • Am I understanding correctly… the »process is killed« means the script exits _before_ executing the `cp`? Could you try adding `set -e` at the beginning of the script? If this does not give any clue, you could try doing `strace find` instead of the sole `find` (and eventually post the output somewhere and give us a link). – Andreas Wiese May 10 '14 at 22:37
  • @Patrick On Slackware there's the `0 exit status` and perhaps on CentOS too. Also there's no `3 exit status`. – slackmart May 10 '14 at 22:53
  • I am curious too, so @OriPrice I am guessing you are looking for `svn` files. Maybe using: `find /source/dir/path/ -name '*.svn' -exec rm -rf '{}' \;` works better. – slackmart May 10 '14 at 22:54

1 Answers1

1

Try this (note the !)

dir1=/source/dir/path/
while ! inotifywait -qqre modify "$dir1"; do
   rm -r /destination/dir/path
   find /source/dir/path/ -name .svn -exec rm -rf '{}' \;
   cp -ruv /source/dir/path/* /destination/dir/path/
done
Gilad
  • 111
  • 2