【发布时间】:2016-11-19 01:27:01
【问题描述】:
我在玩 bash 读取功能。我喜欢我目前外壳上的一个简单层。 read -e 执行制表符完成和以前的命令,并使用 ctrl+d 发送 EOF 让我回到原来的 shell。这是我的参考:
Bash (or other shell): wrap all commands with function/script
我想要一些处理 SIGINT 的帮助,ctrl+c。在普通的 shell 中,如果您开始键入并在中途按 ^C,它会立即结束该行。对于这个简单的示例,在 ^C 之后,我仍然必须在注册之前按回车键。
我如何保留 readline 的优点,但仍能正确处理 SIGINT?理想情况下,它会向 while 读取循环发送一条 continue 语句,或者以某种方式向我的读取正在等待的 STDIN 发送一个 \n。
示例代码:
#!/bin/bash
# Emulate bash shell
gtg=1
function handleCtrl-C {
# What do I do here?
gtg=0
return
}
trap handleCtrl-C INT
while read -e -p "> " line
do
if [[ $gtg == 1 ]] ; then
eval "$line"
fi
gtg=1
done
【问题讨论】:
标签: bash readline interactive sigint bash-trap