考虑:
$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 举报,一经查实,本站将立刻删除。