小编Mar*_*ric的帖子

Bash 在“选择”循环运行时忽略 SIGINT 陷阱

当我将“陷阱”与选择循环结合使用时,即当我尝试在显示选项时按 CTRL+C 来中断时,它只会在终端中打印 ^C。如果我从脚本中删除“陷阱”,它通常会退出,即它会接受 CTRL+C。

我已经在两种不同版本的 bash(一种随 CentOS 一起提供,一种随 Fedora 一起提供)上对此进行了测试,我对 Fedora(4.4.23(1)-release)中的一个有问题。CentOS 附带的 Bash 版本 4.2.46(2)-release 似乎运行良好。我还在本地终端和远程(通过 ssh)测试过这个。问题总是在 Fedora 方面。

我将发布代码以查看我在说什么

这个不起作用:

#!/bin/bash

trap exit SIGINT

select opt in One Two Three; do
        break
done
Run Code Online (Sandbox Code Playgroud)

如果我要删除整个 'trap exit SIGINT' 行,它将正常工作并接受 CTRL+C 没有问题。

任何想法如何解决或绕过这个?

bash signals trap select

4
推荐指数
1
解决办法
954
查看次数

标签 统计

bash ×1

select ×1

signals ×1

trap ×1