나는 스크립트를 대화형으로 만들기 위해 bash에서 이 코드를 사용하고 있습니다. 내 말은 interactive
스크립트가 내 데이터의 경로가 무엇인지와 같은 몇 가지 질문을 하도록 하는 것입니다.
#!/bin/bash -ef
read userInput
if [[ -n "$mypath" ]]
then
datadir=$mypath
fi
printf "YOUR PATH TO DATA IS: $datadir ";
다음과 같은 질문이 있습니다.
- 이전 코드에서는 단어를 완벽하게 표시하지 못했습니다. 특히
TAB
키를 사용하여 단어를 완성하거나right/left arrows
글자를 살펴볼 때 더욱 그렇습니다. 예를 들어 경로를 작성하는 동안 실수를 한 경우 , 등의 키를 사용하여 이 실수를 수정하려고 하면 해당 키가 제대로 작동하지 않습니다Home
.End
arrows left/right
- 내 항목이
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
.