当我使用 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+ ?。但更有用的解决方案是确保您的终端设置符合您的期望(和输入)。