我在玩bash讀取功能。我喜歡我目前shell中的一個簡單圖層。讀-e沒有tab-complete和以前的命令,並且用ctrl + d發送EOF讓我回到我的原始shell。這裏是我的參考:如何處理從bash中的標準輸入讀取中斷信號
Bash (or other shell): wrap all commands with function/script
我想一些幫助處理SIGINT,CTRL + C。在一個正常的shell中,如果你開始輸入並在中途點擊^ C,它會立即結束該行。對於這個簡單的例子,在^ C之後,我仍然必須在註冊之前返回。
我該如何保持readline所具有的好處,但仍能正確處理SIGINT?理想情況下,它會向while循環發送continue語句,或者以某種方式將\ 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
我不確定這是我想要的 - 如果我輸入'exit'並按下Ctrl-C,我希望它丟棄退出並給我一個新的提示。 – CGanote