2014-10-31 1 views
1

BusyBox Linux 설치에서 실행중인 bash 스크립트가 있습니다. 내 스크립트를 실행하면스크립트를 실행하는 이중 입력

, 프롬프트에서 나는 yes를 입력해야 다음과 같은 출력합니다 :

Remove existing upgrades stored on this device? 

Please answer yes or no. 

    Remove existing upgrades stored on this device? Please answer yes or no. 

    Remove existing upgrades stored on this device? 

yes는 IT mvoes의 두 번째 항목에와 case의 예에서 명령을 실행 고리. 왜 내가 두 번 입력해야한다는 아이디어? 아래에있는 내 솔루션과 IF Statement를 사용하여 I 스크립트를 재개발 한

while true; do 
    read -p " Remove existing upgrades stored on this device? " yn 
    case $yn in 
     [Yy]*) 
     echo " Moving into folder." 
     echo " Removing existing upgrade files." 
     echo " Moving back to original folder." 
     echo " Complete."; 
    break;; 
     [Nn]*) 
     echo " Enough space is available." 
     echo " This script can be run again if required."; 
    break;; 
     *) 
     echo "Please answer yes or no." 
     echo "";; 
    esac 
done 
+0

그때해야 할 경우 내가 소문자로 입력을 변환하거나 – Ashish

+0

다음 대문자 case 문에 넣어«내가 왜 어떤 아이디어가 두 번 입력?»내가'의 프롬프트에서 스크립트를 시도 할 bash' 그리고 괜찮 았는데, 두 번 내 대답을 입력 할 필요가 없습니다. 다음으로 나는'busybox sh'에서와 같이'busybox' 세션을 시작했고, 새로운 프롬프트에서 다시 스크립트를 실행했습니다. 다시 문제 없습니다. 두 경우 모두 나는 모든 예를 조합했는데, 그렇지 않을 수도 있고 아마도 그렇게 생각할 수도 있습니다. 도덕적으로, 그것은 당신에게'busybox'에 대한 당신의 특정 이슈에 문제가 있고 당신의 질문에 더 많은 세부 사항을 추가하는 것을 고려해야한다고 생각합니다. – gboffi

+0

@gboffi 감사합니다. 또한 스크립트가 예상대로 실행되는 Fedora 컴퓨터가 있는데 BusyBox 컴퓨터에서는 이중 입력을 요구합니다. 제가 제공 할 수있는 정보를 많이 포함 시켰습니다. 아마도 누군가가 비슷한 상황에 처했을 때 나를 도울 수 있었으면합니다. –

답변

0

이 시간 : 여기

내가 사용하고있는 코드의 예입니다.

누군가가 while 루프를 유지하는 방법에 대한 제안이 있다면 나는 아직도 듣고 싶습니다.

read -p " Remove existing upgrades stored on this device? (y/n) " RESP 
if [ "$RESP" = "y" ]; then 
    echo " Moving into folder." 
    echo " Removing existing upgrade files." 
    echo " Moving back to original folder." 
    echo " Complete."; 
else 
    echo " Enough space is available." 
    echo " This script can be run again if required."; 
fi