Bash编写家庭作业

时间:2012-02-20 15:48:00

标签: shell

  

编写脚本以帮助用户计算纳税申报表。提示   用户从键盘输入他/她的收入,然后我们以下   计算规则。在屏幕上显示结果。

     
      
  • 如果收入低于5000,则不含税
  •   
  • 如果收入在5000到30000之间,税率为10%
  •   
  • 如果收入超过30000,税率为20%
  •   

这是我的尝试:

#!/bin/bash

read -p "Enter your income tax:" $var1
if [[ $var1 -lt 5000 ]];
then
 echo "no tax"
elif [[ $var1 -gt 5000 && $var1 -lt 30000 ]];
then
 echo "the tax rate is 10%"
else
 if [[ $var1 -gt 30000 ]];
then 
echo "the tax rate is 20%"
 fi
fi

现在,当我运行程序时,不管我放在那里的数字,它总是说没有税。有人能说出我的代码有什么问题吗?

3 个答案:

答案 0 :(得分:2)

将read语句中的$ var1更改为var1

答案 1 :(得分:1)

这是我的解决方案:

#!/bin/bash
echo "Please enter your income: "
read income

if [ $income -lt 5000 ]
then echo "no tax for you"
fi

if [ $income -ge 5000 -a $income -le 30000 ]
then echo "Your tax rate is 10%"
fi

if [ $income -gt 30000 ]
then echo "Your tax rate is 20%"
fi

我查看了你的解决方案并认为你的if / else语句存在问题。结构应该始终是if-elif-else。但你的别人之后有if语句吗?另外,使用bash,你不必像在Haskell这样的函数式语言中使用elif作为第二个if语句。所以你可以简单地做三个if语句。

答案 2 :(得分:0)

read -p "Enter your income tax:" var1
if [[ $var1 -lt 5000 ]];
then
 echo "no tax"
elif [[ $var1 -gt 5000 && $var1 -lt 30000 ]];
then
 echo "the tax rate is 10%"
else
 if [[ $var1 -gt 30000 ]];
then 
echo "the tax rate is 20%"
 fi
fi

运行正常。 (prog.sh是具有此源的文件)。

$ sh prog.sh
Enter your income tax:6000
no tax

$ sh prog.sh
Enter your income tax:6000
the tax rate is 10%

$ sh prog.sh
Enter your income tax:40000
the tax rate is 20%