대화형 스크립트에서는 키보드의 키 입력이 작동하지 않습니다!

대화형 스크립트에서는 키보드의 키 입력이 작동하지 않습니다!

나는 스크립트를 대화형으로 만들기 위해 bash에서 이 코드를 사용하고 있습니다. 내 말은 interactive스크립트가 내 데이터의 경로가 무엇인지와 같은 몇 가지 질문을 하도록 하는 것입니다.

#!/bin/bash -ef
read userInput
if [[ -n "$mypath" ]]
then
datadir=$mypath 
fi
printf "YOUR PATH TO DATA IS: $datadir  ";

다음과 같은 질문이 있습니다.

  1. 이전 코드에서는 단어를 완벽하게 표시하지 못했습니다. 특히 TAB키를 사용하여 단어를 완성하거나 right/left arrows글자를 살펴볼 때 더욱 그렇습니다. 예를 들어 경로를 작성하는 동안 실수를 한 경우 , 등의 키를 사용하여 이 실수를 수정하려고 하면 해당 키가 제대로 작동하지 않습니다 Home.Endarrows left/right
  2. 내 항목이 empty(내 말은비어 있는데이터 경로가 없거나 빈 필드만 있는 경우) 코드에서 경로를 다시 묻거나 프로세스를 중단하고 종료하도록 하고 싶습니다.

어떤 제안이라도 높이 평가하겠습니다.

답변1

while ((1)) ; do
  echo please define path:
  read input
  echo is $input ok [y/n/abort]?
  read answer
  case $answer in
    [yY]|[Yy][Ee][Ss]*)
      path=$input
      break
      ;;
    [Aa][Bb][Oo][Rr][Tt])
      exit
      ;;
    [Nn]|[Nn][Oo])
      ;;
    *)
      echo invalid input, please try again
      ;;
  esac
done

즉, case명령문의 무한 루프는 사용자가 항목의 유효성을 검사할 때만 중단됩니다. 물론 피드백 루프를 실행하기 전에 해당 경로가 실제로 존재하는지 확인할 수도 있습니다 case.

관련 정보