2012-02-20 128 views
0

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

  • 如果收入低于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 

现在,当我运行日e程序,不管我输入什么号码,它总是会说没有税。有人能告诉我我的代码有什么问题吗?

回答

2

改变你读语句中的$ var1的刚VAR1

+0

当我这样做,现在什么都没有出现。它只是接受它,程序完成了。 – user1221394 2012-02-20 15:58:20

+0

这个答案是正确的。 – 2012-02-20 16:14:38

+0

那么为什么我的程序不能正常工作呢?我仍然感到困惑,因为我的逻辑在那里,我不知道还有什么可能是错的。 – user1221394 2012-02-20 16:33:46

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% 
+0

如果收入恰好为5000或30000,则不会输出。 – FTP 2017-05-11 16:17:09

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语句。

+0

他们没有指定排他或不,但它使自从所以我改变了中间,如果从gt和lt到ge和le – 2017-05-12 16:19:35