Основная индикаторная строка для каждой строки вывода в async bash скрипте

В выходных данных update-grub уже показан порядок опций grub, начиная с нуля.

Таким образом, в этом случае значение по умолчанию 2 запустит ядро ​​2.6

0
12.12.2018, 20:06
1 ответ

Это не работает, поскольку переменная оболочки installed— это две разные переменные в функции progressbar(в ее окружении подоболочки )и в функции installplugin. Функция progressbarвыполняется в подоболочке, поскольку вы запускаете ее как фоновую задачу. Он унаследует значение от своей родительской среды при запуске функции, но родитель не сможет установить новое значение в дочерней среде (подоболочке progressbar).

Это по-прежнему использует progressbarв качестве фоновой задачи, но позволяет установить ловушку для выхода из бесконечного цикла. Основная функция, foo, запускает ловушку, посылая ей соответствующий сигнал, когда это делается.

progressbar () {
    trap 'break' USR1

    while printf '.' >&2; do
        sleep 0.25
    done
}

foo () {
    progressbar & pid="$!"

    echo 'working...'
    sleep 5
    echo 'done.'

    kill -s USR1 "$pid"
}

foo
0
28.01.2020, 04:07

Теги

Похожие вопросы