2012-02-20 131 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