Выполнять команды одновременно без подоболочки (разрешить общие переменные) - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть некоторый код, который выглядит следующим образом

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.

Как я могу заставить эти две функции работать одновременно, допуская общие переменные? Единственное решение, о котором я могу подумать, - это запись в файл, но я не уверен, является ли это наиболее эффективным решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...