fswatch | пока читаешь | XARGS запускает команду дважды

Спасибо заранее за любые советы

Я работаю над командой fswatch, чтобы запустить скрипт, когда файлы попадают в папку "Загрузки".

fswatch --event Created Downloads/ | (while read x; do echo $x | xargs -0 bash ./dlsort.sh; done)

Скрипт работает как задумано. Проблема, с которой я столкнулся (я ожидаю), связана с (пока читается x; bit:

Проблема в том, что dlsort.sh вызывается дважды для каждой загрузки. Так как при первом запуске скрипта файл перемещается, я получаю сообщение об ошибке "Нет такого файла или каталога" при втором запуске. Это не имеет большого значения, так как файл делает его, куда он должен идти, но я в основном работаю над этим проектом, чтобы больше узнать о bash / scripting, поэтому я хотел бы выяснить, что я неправильно понимаю по этому поводу команда.

РЕДАКТИРОВАТЬ: добавление dlsort.sh

if (echo "$1" | grep -q '\.jpg$'); then
  mv "$1" Desktop/targdir/
else
  mv "$1" Downloads/
fi

0 ответов

Другие вопросы по тегам