bash shell script 에서 사용자 입력을 받는 것에 대해 작성한적이 있다.
[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를 사용할 수 있게 된다.
필요하지 않은 분들도 있겠지만.. .조금이라도 도움이 되길 바라면 오늘도 필자는 끄적거린다.
'Development > Bash Shell script' 카테고리의 다른 글
[BASH Shell] case 문( 활용 포함) (0) | 2022.04.05 |
---|---|
[BASH Shell] shell script 사용자 입력 받기 (input user keyboard) (0) | 2022.01.11 |
[BASH Shell] shell script 주석(한줄 주석/여러줄(블럭단위) 주석) (0) | 2019.05.03 |
[BASH Shell ] 숫자 자릿수 0으로 채우기(00, 01, 02 ....) (0) | 2018.09.28 |
[BASH Shell ] 문자열 길이 구하기 (0) | 2018.09.18 |