Ctrl+C 命令不会终止无限(while)循环

Ctrl+C 命令不会终止无限(while)循环

我有这个小脚本。当我启动它并且终端具有焦点时Ctrl+C会停止 feh,然后 while 循环会再次启动 feh。我期望,只要终端 (!) 具有焦点,Ctrl+C就会中断 while 循环并终止 feh。

#!/bin/bash

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

有人能告诉我如何才能在这里获得这种首选行为吗?

答案1

尝试这个:

#! /bin/bash

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

这样,当 feh 以非零状态退出时(就像您终止它时一样),循环将结束。

答案2

捕获 INT 信号,例如:Ctrl+C

更多信息这里

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

相关内容