2011-12-04 5 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は何ですか?それはwhileループであるはずですか?私が見ているように、これはあなたの変数isResizeAnotherImageをYyNnの値にし、プロンプトであなたが入力したものを無視することになります。 forループをwhileループに変更して、それがうまくいくと思います。

+0

私はまだシェルスクリプトのforループという概念が欠けています。私は正しい方向に導いてくれてありがとうございます。はい、それはwhileループになっているはずです。私はこれを今すぐやります。 – utsabiem

+0

はい、うまくいきました。シェルスクリプトには何らかのブレークポイントがありますか?彼らはコーディングとデバッグを非常に簡単にします。 – utsabiem

+0

スクリプトの最初の行に-xオプションを追加すると、#!/ bin/bash -xになります。これにより、シェルがデバッグモードで起動され、多くの冗長出力が得られます。コードをステップバイステップで実行できるという意味でのデバッグではありませんが、何が起きているのかを十分に感じるだけで十分です。私は他の人がおそらくこのサイトで同じ質問をしていると確信しています – DaveRlz

関連する問題