linux - 运行非常简单的 shell 脚本时出现语法错误

标签 linux shell unix

我在运行关于剪刀石头布的小脚本时遇到了这个错误。这是我的代码,它在第二个 elif 语句上失败了,你能找出原因吗??

function compare () {
    if [ "$userChoice" == "$computerChoice" ]
       then echo "Empate!"
    elif [ "$userChoice" == "piedra" ]
        if [ "$computerChoice" == "tijeras" ]
            then echo "La piedra gana"
        else
            echo "El papel gana"
        fi
    elif [ "$userChoice" == "papel" ]
        if [ "$computerChoice" == "piedra" ]
            then echo "El papel gana"
        else
            echo "Las tijeras ganan"
        fi
    fi
}
compare $userChoice $computerChoice

错误信息是:

myscript: line 10: syntax error near unexpected token `elif'
myscript: line 10: `    elif [ "$userChoice" == "papel" ]'

最佳答案

您忘记了几个“then”语句。永远记住的好方法是将“then”语句添加到与“if”相同的行。示例如下。

function compare () {
if [ "$userChoice" == "$computerChoice" ] ; then
  echo "Empate!"
elif [ "$userChoice" == "piedra" ] ; then
  if [ "$computerChoice" == "tijeras" ] ; then
     echo "La piedra gana"
  else
     echo "El papel gana"
  fi
elif [ "$userChoice" == "papel" ] ; then
  if [ "$computerChoice" == "piedra" ] ; then
     echo "El papel gana"
  else
      echo "Las tijeras ganan"
  fi
fi
}
compare $userChoice $computerChoice

关于linux - 运行非常简单的 shell 脚本时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34911877/

相关文章:

linux - 虚拟机中docker中与kafka的连接

linux - 如何在 sunos 中获取附加到特定端口的进程 ID

linux - Makefile: Target dependency - How to always-make it?

linux - 使用 AWK、Join 等在 unix 中的两个文件之间进行自然连接

C 程序 strcmp 不工作

linux - BeagleBone Black 中的 g_multi 在哪里配置?

linux - Linux 中的设备驱动程序开发

java - Java使用的内存多于堆大小(或正确大小的Docker内存限制)

linux - 使用 shell 脚本更新 catalina.properties 文件

linux - 7 天后删除文件