You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Ctrl+C终止read命令且不执行后续代码、不关闭终端?

解决Ctrl+C中断read后脚本继续执行的问题

方法一:通过trap捕获INT信号直接退出脚本

修改后的代码如下:

trap 'exit 1' INT
read -l -P "" number
if test -z "$number"
    set number 2
end
# do something e.g. echo "Processed"
echo "Processed"

原理:按下Ctrl+C触发INT信号时,脚本执行exit 1直接终止,不会继续运行后续代码;这种退出方式仅终止脚本逻辑,不会关闭终端(即使脚本与终端PID一致)。

方法二:检查read命令的退出状态码

无需设置trap,直接通过$status(fish shell中获取上一条命令退出码)判断read是否被中断:

read -l -P "" number
if test $status -ne 0
    exit 1
end
if test -z "$number"
    set number 2
end
echo "Processed"

原理:Ctrl+C中断read时,其退出码不为0,此时执行exit 1终止脚本,避免后续代码执行。

内容的提问来源于stack exchange,提问作者ye xiang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 20:40:03