我是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条件。 为什么会发生这种情况以及如何预防?
答案 0 :(得分:1)
你的缩进有点过时,这使得你很难阅读你的代码。
忽略这一点,你的for循环是什么?这应该是一个while循环吗?在我看来,这将使你的变量isResizeAnotherImage取值YyNn并忽略你在提示符下输入的内容。将你的for循环更改为while循环,我怀疑它会起作用。