bash中意外的文件结束错误

时间:2014-02-18 09:54:29

标签: linux bash

我继续在这个简单的bash脚本的第47行上获得并意外结束文件错误。它工作正常,直到我删除链中没有做任何事情的if语句之一。我一直试图修复这个错误30分钟,现在没有运气。我已经搞砸了我的windows vim编辑器中的设置,尝试了3个不同的ftp客户端,并且多次查看我的代码。希望看到它的其他人会发现我之前没有找到的一些愚蠢的错误。我也知道这不是最干净的代码,但它是我第一次尝试使用bash脚本而且我有点匆忙。

    #! /bin/bash
    # A simple command to classify triangle type

    if [[ -n $1 && -n $2 && -n $3 ]]
    then
        if [[ -z $4 && -z $5 && -z $6 && -z $7 && -z $8 && -z $9 ]]
        then
        let a=$1
        let b=$2
        let c=$3
            if [[ a -gt 0 && b -gt 0 && c -gt 0 ]]
        then
                if [[ $((a+b)) -gt c && $((b+c)) -gt a && $((a+c)) -gt b ]]
            then
            if [[ a -eq b || a -eq c || b -eq c ]]
                then
                    if [[ a -eq b && a -eq c && b -eq c ]]
                then
                echo "This is an equilateral triangle"
                elif [[ ( a -eq b && a -ne c ) || ( b -eq c && b -ne a ) || ( a -eq c && b -ne c ) ]]
                    then
                    echo "This is an isosceles triangle"
                fi
            elif [[ a -ne b && a -ne c && b -ne c ]]
                then
                        let x=$((a**2+b**2-c**2))
                        let y=$((a**2+$c*2-b**2))
                        let z=$((b**2+c**2-a**2))
                if [[ x -eq 0 || y -eq 0 || z -eq 0 ]]
                then
                echo "This is a right triangle"
                else
                echo "This is a scalene triangle"
                fi
            else
            echo "Invalid triangle: sum of smaller sides greater than largest side"
            fi
        else
            echo "Invalid triangle: 0, negative, or non-integer entered"
            fi      
        else
        echo "Invalid triangle: too many arguments"
        fi  
    else
        echo "Invalid triangle: missing argument"
    fi

编辑:将此块粘贴到我的帖子后,似乎每隔一段时间就会出现随机选项卡而不是空格,我不知道为什么。这真是令人沮丧。

Edit2:经过7个小时摆弄这个该死的剧本后,我终于让它正常工作了。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

尝试正确缩进代码,因此会突然出现缺少某些块的情况。我是以非常一般的方式做到的,我发现有一个:

#! /bin/bash
# A simple command to classify triangle type

if [[ -n $1 && -n $2 && -n $3 ]] #block1
then
    if [[ -z $4 && -z $5 && -z $6 && -z $7 && -z $8 && -z $9 ]] #block2
    then
        if [[ a -gt 0 && b -gt 0 && c -gt 0 ]] #block3
        then
            if [[ $((a+b)) -gt c && $((b+c)) -gt a && $((a+c)) -gt b ]] #block4
            then
                if [[ a -eq b || a -eq c || b -eq c ]] #block5
                then
                    if [[ a -eq b && a -eq c && b -eq c ]] #block6
                    then
                    elif [[ ( a -eq b && a -ne c ) || ( b -eq c && b -ne a ) || ( a -eq c && b -ne c ) ]]
                    then
                    fi
                elif [[ a -ne b && a -ne c && b -ne c ]] #block5
                then
                   if [[ x -eq 0 || y -eq 0 || z -eq 0 ]] #block6
                   then
                   else
                   fi
                else
                fi
            else #block4
            fi
        else #block3
        fi  
    else #block2
    fi
##### missing one if block

答案 1 :(得分:0)

缺少一个fi。尝试更正脚本的注释,您将看到缺少的文件。