В выходных данных update-grub уже показан порядок опций grub, начиная с нуля.
Таким образом, в этом случае значение по умолчанию 2 запустит ядро 2.6
Это не работает, поскольку переменная оболочки 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