Команда Ctrl+C не завершается бесконечный (в то время как) цикл

У меня есть этот небольшой сценарий. Когда я запускаю его, и терминал имеет фокус, Ctrl+C останавливает feh, и затем цикл с условием продолжения запускает feh снова. Я ожидаю, что, пока терминал (!) имеет фокус, Ctrl+C прерывает цикл с условием продолжения и уничтожает feh также.

#!/bin/bash

sleep 2
while true; do
feh --cycle-once -zD $1 *.png
done

Кто-то может сказать мне, как я могу получить то предпочтительное поведение здесь?

5
задан 30 June 2018 в 17:45

2 ответа

Попробуйте это:

#! /bin/bash

sleep 2
while feh --cycle-once -zD $1 *.png; do :; done

Таким образом, цикл закончится, когда feh выйдет с ненулевым состоянием (как это делает при завершении его).

3
ответ дан 23 November 2019 в 09:23

Захватите сигнал 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
2
ответ дан 23 November 2019 в 09:23

Другие вопросы по тегам:

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