Bash脚本:while循环使用If语句导致无限循环

时间:2018-05-07 09:25:22

标签: bash if-statement while-loop

我正在尝试写一个bash脚本,询问一个人是否想要一杯茶,Y回复“很好,我现在要泡茶”到控制台“;并且N返回”你确定“4在停止循环之前,如果在4个跟进报价期间,用户改变主意并按下“Y”,计算机将打印出“好,我现在可以泡茶”到控制台。

我的脚本导致无限循环,所以我需要在代码中有一些增量计数,我只是想弄清楚在哪里? 可能是一个非常基本的问题,如果是这样的道歉,Linux Bash脚本的新手,任何帮助表示赞赏:

#!bin/bash
#tea2.sh
echo "Will you have a cup of tea?"
read answer
while [ "$answer" = n ]
do
  echo "Are you sure"
  if [ "$answer" = y ]
  then
        break
  fi
  echo "Great, I\’ll make tea now"
done

第二个脚本:

#!/bin/bash
#tea3.sh
set yname="Would you like a cup of tea?"
while ($yname != "n")
       echo -n "Are you sure?"
       set yname = $<5
       if ($yname != "y") then
              echo "Great, I\'ll make tea now"
fi
done

1 个答案:

答案 0 :(得分:2)

你永远不会在循环内部询问,所以答案永远不会改变。因此无限循环。你要做的是read answer 里面循环(和Use More Quotes™)。

顺便说一下,你所使用的印刷报价在Bash中没有特殊含义,所以它不需要转义。