You're using case where you'd better use if...elif...elif...fi
As far as I know, case can't evaluate .
for -le -ge, see help test.
Bash can't evaluate decimal arithmetic expression.
You need to protect the dollar sign as it doesn't call a variable.
if [ $Income -le 10000 ]; then
IncomePostTax=$(echo "scale=2; $Income * .10" | bc)
echo "Because you made $10,000 or less during that time period your only getting charged 10%"
elif [ $Income -ge 10001 ] && [ $Income -le 20000 ]; then
IncomePostTax=$(echo "scale=2; $Income * .15" | bc)
echo "Because you made between \$10,000 and \$20,000 in the given time period your only getting charged 15%"
echo "Invald data, please re-enter the data"