Linux bash文件中出现意外的eof错误

Linux bash文件中出现意外的eof错误,linux,bash,scripting,Linux,Bash,Scripting,我正在创建一个小程序,它做一些简单的数学运算,但无法运行它。它只是输出“意外的文件结尾”。我似乎找不到错误 #!/bin/bash until [ $second_num -ne 0 ]; do echo "Enter number 1:" read first_num echo "Enter number 2:" read second_num echo "Cannot divide by 0. Start over." done result=0

我正在创建一个小程序,它做一些简单的数学运算,但无法运行它。它只是输出“意外的文件结尾”。我似乎找不到错误

#!/bin/bash

until [ $second_num -ne 0 ]; do
    echo "Enter number 1:"
    read first_num
    echo "Enter number 2:"
    read second_num
    echo "Cannot divide by 0. Start over."
done

result=0
if [ $first_num -ne 999 && $second_num -ne 999 ]; then
    let result=$((first_num/second_num))
    echo $result    
    echo "Program finished!"
else
    echo "You have exited the program."
    exit 0 
fi  

number=1
while [ $number -lt 100 ]; do
    echo $number
    let number=$(( $number % 5 ))
    echo $number >> sample.txt
done

乍一看,我发现您的脚本有两个问题:

  • 直到[$second_num-ne 0];执行

    您没有初始化
    $second\u num
    ,因此您试图将0与零进行比较

  • if[$first_num-ne 999&$second_num-ne 999];然后

    &&
    是一个。(单个)方括号内两个表达式的AND运算符为
    -a


乍一看,我发现您的脚本有两个问题:

  • 直到[$second_num-ne 0];执行

    您没有初始化
    $second\u num
    ,因此您试图将0与零进行比较

  • if[$first_num-ne 999&$second_num-ne 999];然后

    &&
    是一个。(单个)方括号内两个表达式的AND运算符为
    -a


    • 我不知道您想做什么,但是下面的代码应该可以正常工作,没有任何错误

       #!/bin/bash
      
      until [ $second_num -ne 0 ]; do
          echo "Enter number 1:"
          read first_num
          echo "Enter number 2:"
          read second_num
          echo "Cannot divide by 0. Start over."
      done
      
      result=0
      if [ "$first_num" -ne "999" -a "$second_num" -ne "999" ];
      
      then
          let result=$(($first_num/$second_num))
          echo $result    
          echo "Program finished!"
      else
          echo "You have exited the program."
          exit 0
      fi
      
      number=1
      while [ $number -lt 100 ]; do
          echo $number
          let number=$(( $number % 5 ))
          echo $number >> sample.txt
      done
      

      我不知道您想做什么,但是下面的代码应该可以正常工作,没有任何错误

       #!/bin/bash
      
      until [ $second_num -ne 0 ]; do
          echo "Enter number 1:"
          read first_num
          echo "Enter number 2:"
          read second_num
          echo "Cannot divide by 0. Start over."
      done
      
      result=0
      if [ "$first_num" -ne "999" -a "$second_num" -ne "999" ];
      
      then
          let result=$(($first_num/$second_num))
          echo $result    
          echo "Program finished!"
      else
          echo "You have exited the program."
          exit 0
      fi
      
      number=1
      while [ $number -lt 100 ]; do
          echo $number
          let number=$(( $number % 5 ))
          echo $number >> sample.txt
      done
      

      我在bash版本4下执行,没有问题(没有语法错误), 但是一些语义错误,变量second_num未定义,&&在if语句中 第3行:[:-ne:应为一元运算符 输入数字1: 34 输入数字2: 54 不能除以0。请重新开始。 第12行:[:缺少“]” 您已退出该程序


      再次向您发送脚本

      我在bash版本4下执行,没有问题(没有语法错误), 但是一些语义错误,变量second_num未定义,&&在if语句中 第3行:[:-ne:应为一元运算符 输入数字1: 34 输入数字2: 54 不能除以0。请重新开始。 第12行:[:缺少“]” 您已退出该程序


      再次向您发送脚本

      学习使用:
      sh-x
      sh-nv
      来调试此脚本。通常,意外的EOF意味着引号不匹配或类似的问题,或者循环构造不完整。不清楚为什么在不测试任何内容的情况下报告
      不能除以0。我怀疑您显示的代码是否正确不是你要调试的代码;你显示的代码没有给出你说的错误。
      中的
      &&
      如果
      应该写
      -a
      -这是一个缺陷。学会使用:
      sh-x
      sh-nv
      来调试。通常,意外的EOF意味着引号不匹配或类似的问题,或者不完整的循环构造。不清楚为什么在不测试任何内容的情况下,您报告的
      不能除以0
      。我怀疑您显示的代码不是您试图调试的代码;您显示的代码没有给出您所说的错误。
      if
      中的
      &
      应该编写
      -a
      ,这是一个缺陷。它将将运行,但由于未初始化的
      $second\u num
      ,它仍将显示警告。它将运行,但由于未初始化的
      $second\u num
      ,它仍将显示警告。