Development/Bash Shell script

[BASH Shell] Shell script사용자 입력 받기 - backspace 키 사용하기

louky 2022. 4. 6. 12:26
반응형

bash shell script 에서 사용자 입력을 받는 것에 대해 작성한적이 있다. 

2022.01.11 - [Script Language/Bash Shell script ] - [BASH Shell] shell script 사용자 입력 받기 (input user keyboard)

 

[BASH Shell] shell script 사용자 입력 받기 (input user keyboard)

Shell script  에서 사용자 입력 받는 방법이다. 먼저 흔히 알고 있는 echo와 read를 사용한 방법이다. [echo-read] no color # No Color with Default echo "# No Color with Default" echo -n "+ Input keyboar..

louky0714.tistory.com

 

어느날 사용자 입력을 받다 보니..... 실수로 오타가 났을때 백스페이스키 또는 delete키를 이용해서 오타 난것을 지워야 하는데 

제대로 지워지지 않고 ctrl + backspace 키 조합으로 눌러야 하는 불편함이 발생하기도 했다. 

물론 ctrl+backspace 키가 편한 사람도 있지만 아닌 사람도 있기에 조금더 편하고자 이글을 작성한다. 

 

[ user_name@hostname ] # cat input_test.sh
#!/bin/bash

echo -n "input ? "
read ans_input

echo "ans_input : ${ans_input}"

 

주로 위와 같은 코드로 작성을 할 경우 아래와 같이 입력을 받을수 있고 입력을 받다가 오타가 나서 backspace를 누를 경우  "^H"와 같이 입력이 되어서 정상적으로 입력이 되었는지 육안으로 확인이 어려울수 있다. 

 

[ user_name@hostname ] # cat input_test.sh
#!/bin/bash

echo -n "input ? "
read -e ans_input        # read command에 "-e"옵션을 추가 한다. 

echo "ans_input : ${ans_input}"

위와 같이 read command에 "-e " 옵션을 추가 하면 backspace key를 사용할 수 있게 된다. 

 

기존과 달리 "^H"는 생기지 않지만 "input ?"  이라는 질문(?)까지 모두 지워져 버렸지만....그래도 이전보다는 확인이 쉬워졌다. 

 

echo 와  read를 같이 쓸 경우 질문(?)인  "input ?" 이라는 것까지 모두 지워버린다. 

이 부분도 아쉬운거 같으니 read command만을 이용해서 처리하는 방법으로 하면 위와 같은 현상을 해소 할수 있다.

 

[ user_name@hostname ] # cat input_test.sh
#!/bin/bash

#echo -n "input ? "    # 기존 echo & read 방식에서 echo를 삭제(주석)처리
read -e -p "input ? " ans_input

echo "ans_input : ${ans_input}"

 

echo를 제외하고 read만을 이용하여 할 경우 깔끔(?)하게 backspace key를 사용할 수 있게 된다. 

 

필요하지 않은 분들도 있겠지만.. .조금이라도 도움이 되길 바라면 오늘도 필자는 끄적거린다. 

반응형