У меня есть этот небольшой сценарий. Когда я запускаю его, и терминал имеет фокус, Ctrl+C останавливает feh, и затем цикл с условием продолжения запускает feh снова. Я ожидаю, что, пока терминал (!) имеет фокус, Ctrl+C прерывает цикл с условием продолжения и уничтожает feh также.
#!/bin/bash
sleep 2
while true; do
feh --cycle-once -zD $1 *.png
done
Кто-то может сказать мне, как я могу получить то предпочтительное поведение здесь?
Попробуйте это:
#! /bin/bash
sleep 2
while feh --cycle-once -zD $1 *.png; do :; done
Таким образом, цикл закончится, когда feh выйдет с ненулевым состоянием (как это делает при завершении его).
Захватите сигнал INT, например: Ctrl + C
больше infos здесь
trap trapint 2
function trapint {
exit 0
}
В Вашем коде как это:
#!/bin/bash
trap trapint 2
function trapint {
exit 0
}
sleep 2
while true; do
feh --cycle-once -zD $1 *.png
done