我正在玩 bash 读取功能。我喜欢我目前外壳上的一个简单层。read -e 执行制表符完成和先前的命令,并使用 ctrl+d 发送 EOF 让我回到原来的 shell。这是我的参考:
我想要一些处理 SIGINT 的帮助,ctrl+c。在普通的 shell 中,如果您开始输入并在中途按 ^C,它会立即结束该行。对于这个简单的示例,在 ^C 之后,我仍然必须在注册之前按回车键。
如何保留 readline 所做的好事,但仍能正确处理 SIGINT?理想情况下,它会将 continue 语句发送到 while read 循环,或者以某种方式将 \n 发送到我的读取正在等待的 STDIN。
示例代码:
#!/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