2017-01-22 16 views
-1

正しい結果が出力されません。入力に追加コストを掛ける代わりに、入力をそのまま表示します。人の数に選択に基づく追加コストを乗算する必要があります。正しい乗算出力が得られないのはなぜですか?

#!/bin/bash 

read -p "Number of Adult Tickets:(0 for none) " integer1  
read -p "Number of Junior Tickets:(0 for none) " integer2 

echo ""  
echo "$integer1 Adults"  
echo "$integer2 Juniors" 
echo "" 

num1=$50  
num2=$20  
num3=$5  

echo "Season Pass Add-On:"  
echo "1)Add Seasonal Parking"  
echo "2)Add Season Pass For Theme Park"  
echo "7)Just Buy Tickets For Today"  
echo "8)I wanna exit." 

echo "" 
read -p "What would the guest like to do? " guest 
echo ""  

case $guest in 
    1)  
     echo "Add Seasonal Parking"  
     echo ""  
     echo "Add an additional $num1 for every adult pass"  
     echo ""  
     echo "For Adult Tickets "$((integer1 + num1))""  
     echo "For Junior Tickets "$((integer2 + num1))""  
     ;;  
    2)  
     echo "Add Season Pass For Theme Park"  
     echo ""  
     echo "Add an additional $num2 for every adult pass"  
     echo "Add an additional $num3 for every junior pass"  
     echo ""  
     echo "For Junior Tickets "$((integer2 * num2))""  
     echo "For Adult Tickets "$((integer1 * num3))""  
     echo "For Junior Tickets "$((integer2 * num2))""  
     echo "For Adult Tickets "$((integer1 * num3))""  
     ;; 
    3)  
     echo "Just buy tickets for today"  
     exit 0  
     ;;  
    4)  
     echo "invalid entry. You are exiting"  
     exit 1  
     ;; 
esac  

exit 0 

答えて

2

問題は、それが通常の数としては動作しませんので、ドル記号はバッシュで特別な意味を持っている

num1=$50 
num2=$20 
num3=$5 

上のドル記号です。これらの定数を通貨なしで保存し、代わりに結果に追加します。

エコーで表示するには、ドル記号をバックスラッシュでエスケープする必要があります。

echo "For Adult Tickets \$$((integer1 + num1))" 
+0

ありがとうございました!!! – pinook

関連する問題