Shell脚本中的标志值未更改

时间:2011-12-04 13:04:34

标签: shell unix

我是shell脚本的新手,我有一个基本的图像大小调整脚本:

#!/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'。但是在下一个循环中,它表明flag的值没有变为'N'。所以它进入if条件。 为什么会发生这种情况以及如何预防?

1 个答案:

答案 0 :(得分:1)

你的缩进有点过时,这使得你很难阅读你的代码。

忽略这一点,你的for循环是什么?这应该是一个while循环吗?在我看来,这将使你的变量isResizeAnotherImage取值YyNn并忽略你在提示符下输入的内容。将你的for循环更改为while循环,我怀疑它会起作用。