2011-12-04 4 views
0

내가 쉘 스크립트 매우 새로운 오전과 내가 기본 이미지 크기 조정 스크립트가 쉘 스크립트에서 변경 점점되지 않은 : 이제플래그 값이

#!/bin/bash 

isResizeAnotherImage=Y; 
for isResizeAnotherImage in Y y N n 
do 
    echo "option entered before if: $isResizeAnotherImage"; 
    if [ $isResizeAnotherImage='Y' ] || [ $isResizeAnotherImage='y' ]; then 
    echo "Enter the file name : "; 
    read imageFileName; 
    read -p "Enter desired size: " imageDesiredSize; 
    mogrify -resize $imageDesiredSize $imageFileName 2>/dev/null; 

    echo "Resize another image ? Y/N : "; 
    read isResizeAnotherImage; 
    echo "option entered in if: $isResizeAnotherImage"; 
    else 
    echo "option entered : $isResizeAnotherImage"; 
    exit 1; 
    fi; 
done 

을, 그것은 '다른 이미지 크기를 조정?', 성공적으로 첫 번째 이미지를 묻습니다 크기를 조정 . 여기에 'N'을 입력합니다. 그러나 다음 루프에서는 플래그의 값이 'N'으로 변경되지 않았 음을 보여줍니다. 그래서 if 조건에 들어갑니다. 왜 이런 일이 일어나고 그것을 막는가?

답변

1

들여 쓰기가 약간 떨어져서 코드를 읽지 못하게합니다.

당신의 for-loop는 무엇입니까? 그것은 잠깐 동안의 루프일까요? 내가보기에 이것은 당신의 변수 isResizeAnotherImage가 YyNn 값을 취하고 당신이 프롬프트에서 입력 한 것을 무시하도록 만들 것입니다. for-loop를 while 루프로 변경하면 작동 할 것으로 생각됩니다.

+0

아, 아직 쉘 스크립트의 for 루프 개념이 없습니다. 저를 올바른 방향으로 인도 해주셔서 대단히 감사합니다. 네, 잠시 쉬어야하고 지금 당장 할거예요. – utsabiem

+0

예. 쉘 스크립트에 중단 점이 있습니까? 그들은 코딩과 디버깅을 매우 쉽게 만듭니다. – utsabiem

+0

스크립트의 첫 번째 행에 -x 옵션을 추가하여 다음과 같이 만듭니다. #!/bin/bash -x 이렇게하면 셸이 디버그 모드로 시작되고 많은 자세한 정보가 출력됩니다. 코드를 단계별로 실행할 수 있다는 점에서 디버깅은 아니지만, 진행 상황에 대한 느낌을 얻는 것으로 충분합니다. 다른 사람들이 아마도이 사이트에서 같은 질문을했을 것이라고 확신합니다. – DaveRlz