if语句shell脚本错误

时间:2017-05-15 13:54:31

标签: bash shell

您好我不知道这是否会重复,但我真的没有看到这段代码中的错误。它在then语句中给出了一个错误,我认为没有错误。 我已经对代码中断的两行进行了评论。 这是代码:

#!/bin/bash
echo -n "Enter first value:"
read firstvar
echo -n "Enter second value:"
read secondvar
echo -n "Enter last value:"
read compvar
echo -n "Enter operation:"
read ops
counter=0
result=0
while [ $result -eq $compvar ]
do
if [ $ops -eq "+" ]
then result = $((firstvar+secondvar))
elif [ $ops -eq "-" ]
then result = $((firstvar-secondvar))
#elif[ $ops -eq "*" ]
#then result = $((firstvar\*secondvar))
#elif[ $ops -eq "/" ]
#then result = $((firstvar/secondvar))
else
echo "Input valid operation !!!"
fi
(($counter++))
done

2 个答案:

答案 0 :(得分:0)

哦,射击,我迟钝了。错过了“elif”和“[”。

之间的空格

答案 1 :(得分:0)

您需要学习如何空格和缩进以使代码清晰易读。

#!/bin/bash

echo -n "Enter first value:";  read firstvar
echo -n "Enter second value:"; read secondvar
echo -n "Enter last value:";   read compvar
echo -n "Enter operation:";    read ops

counter=0; result=0     #initialize variables
while [ $result -eq $compvar ]; do
   if [ $ops = "+" ]; then
      result = $((firstvar+secondvar))
   elif [ $ops = "-" ]; then
      result=$((firstvar-secondvar))       
   else
      echo "Input valid operation !!!"
   fi
   ((++counter))
done

编写代码与编写文献相同。有一些表格可以让读者轻松阅读(即使只是你6个月之后)。上面的代码令人困惑,稍后会咬你。添加评论。

while循环是无偿的,什么都不做 - -eq至少应该是-ne。计数器可以初始化为整数,以避免可能出现的问题,但它也从未使用过。