微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在捕获中断后如何使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

原文地址:https://www.jb51.cc/bash/384888.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐