我继续在这个简单的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个小时摆弄这个该死的剧本后,我终于让它正常工作了。谢谢你的帮助。
答案 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。尝试更正脚本的注释,您将看到缺少的文件。