在BASH脚本中循环导致语法错误

时间:2016-01-27 17:21:42

标签: bash

我最近开始编写BASH脚本,我目前正在尝试使用while循环。但是,当我运行以下代码块时,命令提示符响应:

run.command: line 12: syntax error near unexpected token `done'
run.command: `done'

然后程序关闭。 这是我正在运行的代码。

#!/bin/bash
echo -e "text"
c=false
while true; do
    printf ">> "
    i=read 
    if [$i = "exit"]; then
        exit
    else if [$i = "no"]; then
        echo "no"
    else
        echo -e "Error: $i is undefined"
    fi
done

我对while循环做了一些研究,但我的循环语法似乎是正确的。当我在最后删除完成时,发生Unexpected end of file错误。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

我自己修好了!

#!/bin/bash
echo -e "text"
c=false
while true; do
  printf ">> "
  read i
  if [ "$i" = "exit" ]; then
    exit
  elif [ "$i" = "no" ]; then
     echo "no"
  else
     echo -e "Error: $i is undefined"
  fi
done

答案 1 :(得分:1)

您可以使用read的-p选项作为提示和case ... esac构造:

while true; do
  read -r -p ">> " i
  case "$i" in
     "exit") exit 0  ;;
     "no") echo "no" ;;
     *) echo -e "Error: $i is undefined";;
  esac
done