Значение флага не изменяется в Shell Script - PullRequest
0 голосов
/ 04 декабря 2011

Я очень новичок в сценариях оболочки, и у меня есть базовый сценарий изменения размера изображения:

#!/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 Ответ

1 голос
/ 04 декабря 2011

Ваш отступ немного, что затрудняет чтение вашего кода.

Игнорируя это, для чего нужен твой цикл for? Это должен быть цикл времени? Как я понимаю, это заставит вашу переменную isResizeAnotherImage принимать значения YyNn и игнорировать то, что вы ввели в командной строке. Измените цикл for на цикл while, и я подозреваю, что он будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...