루프에서 백스페이스 키 선택

루프에서 백스페이스 키 선택

선택 루프를 사용하여 옵션 목록을 만들 때 프롬프트에서 실수를 해서 백스페이스를 누르면 문자가 제거되지 않고 문자 대신 ^H가 표시됩니다.

"읽기"에서 -e를 사용하여 이 문제를 해결할 수 있다는 것을 알고 있지만 선택 루프에서는 어떻게 해야 합니까? 또한 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+를 눌러보세요 ?. 그러나 더 유용한 해결책은 터미널 설정이 기대치(및 입력)와 일치하는지 확인하는 것입니다.

관련 정보