选择循环中的退格键

选择循环中的退格键

当我使用 select 循环创建选项列表时,如果我在提示期间犯了错误并且想要按退格键,它不会删除该字符,而是显示 ^H 而不是它。

我知道在“read”中我可以使用 -e 来解决这个问题,但是在 select 循环中我该怎么办?另外,使用 CTRL+C 来跳出循环也不起作用。我创建了选择循环,以类似菜单的方式循环遍历远程端的目录。如果选择目录,它将更改目录,但如果不是目录,它将选择它作为要编辑的文件。

until [[ $DONE == Yes ]]; do
select dir in $(ssh auth1 ls $PUTANJA $ONLYARPA) Nazad; do
        case $dir in
                "Nazad")
                        if [ "$PUTANJA" == "/var/named/chroot/var/named/master" ]; then
                                return
                        else
                                PUTANJA=$(ssh auth1 "cd $PUTANJA; cd ..; pwd")
                        fi
                        ;;
                *)
                        if ssh auth1 "[ -d $PUTANJA/$dir ]"; then
                                PUTANJA=$PUTANJA/$dir
                        else
                                ZONA=$dir
                                DONE=Yes
                        fi
                        ;;
        esac
        break
done
done

答案1

^H如果您的终端在您按下该键时显示Backspace,则您的终端很可能已将退格序列设置为与您发送的字符不同的字符。其他最常见的退格字符之一是^?。尝试按Ctrl+ ?。但更有用的解决方案是确保您的终端设置符合您的期望(和输入)。

相关内容