加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 01:14:37 所属栏目:安全 来源:网络整理
导读:考虑: $cat b.sh#!/bin/bashtrap 'echo $$was interrupted' INTread fooecho done$./b.sh^C27104 was interrupted^C27104 was interrupted^C27104 was interrupteddone$ (ctrl-c被击中3次,然后是ctrl-d) 我希望执行陷阱后读取中止.是否有一种干净的方法来实
考虑:
$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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读