У меня есть некоторый код, который выглядит следующим образом
function monitor {
inotifywait -m -r -e create,modify --format '%w%f' "${source}" | while read newfile
do
...
new_files=true
done
}
function sync {
while :; do
if [ "$new_files" = true ] ; then
...
fi
done
}
# --- END OF FUNCTIONS ---
monitor & sync
Я узнал, что оператор 'syn c' if никогда не выполняется, потому что переменная $new_files
не разделяется между функциями, потому что когда они называются находящимися в их собственных подоболочках.
Код в monitor
должен постоянно обновляться до inotifywait
. Функция syn c должна запускаться периодически (например, каждые 5 секунд); Я не могу запустить его из monitor
l oop, потому что он повторяется много раз (например, 10 с циклов в секунду), что не подходит для содержимого функции sync
.
Как я могу заставить эти две функции работать одновременно, допуская общие переменные? Единственное решение, о котором я могу подумать, - это запись в файл, но я не уверен, является ли это наиболее эффективным решением.