在捕获中断后如何使Bash的读取中止?

考虑:
$cat b.sh
#!/bin/bash

trap 'echo $$was interrupted' INT
read foo
echo done
$./b.sh
^C27104 was interrupted
^C27104 was interrupted
^C27104 was interrupted
done
$

(ctrl-c被击中3次,然后是ctrl-d)

我希望执行陷阱后读取中止.是否有一种干净的方法来实现这一目标?

似乎没有立即中断是Bash非POSIX扩展(请参阅Bash内置源的read.def中的read_builtin(查找posixly_correct)).

您可以覆盖此行为,并通过强制读取POSIX行为(通过设置POSIXLY_CORRECT环境变量)退出一个Ctrl C:

#!/bin/bash
trap 'echo $$was interrupted' INT
POSIXLY_CORRECT=1 read foo
echo done

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...