Bash에서 이 작업을 수행할 수 있습니다.
while read -n1 -r -p "choose [y]es|[n]o"
do
if [[ $REPLY == q ]];
then
break;
else
#whatever
fi
done
이것은 작동하지만 약간 중복되는 것 같습니다. 이렇게 할 수 있습니까?
while [[ `read -n1 -r -p "choose [y]es|[n]o"` != q ]]
do
#whatever
done
답변1
read
반환 코드 (null이 아닌 유효한 입력을 받으면 0임) 를 사용할 수 없으며 해당 출력을 사용할 수 없습니다( read
아무 것도 인쇄되지 않음). 그러나 while 루프의 조건부 부분에 여러 명령을 넣을 수 있습니다. while 루프의 조건은 원하는 만큼 복잡할 수 있습니다.
while IFS= read -n1 -r -p "choose [y]es|[n]o" && [[ $REPLY != q ]]; do
case $REPLY in
y) echo "Yes";;
n) echo "No";;
*) echo "What?";;
esac
done
q
(입력이 이거나 파일 끝 조건이 감지되면 루프를 종료합니다.)
답변2
간단한 읽기 및 인터럽트를 통해 구현됨
while read release; do
if [ "$release" == "07" ]; then
break
else
echo "Is that current release? e.g: 05. Try again!"
continue
fi
done