Linux 为什么我的变量总是递减为零?

Linux 为什么我的变量总是递减为零?,linux,bash,for-loop,Linux,Bash,For Loop,我写保龄球剧本是为了好玩。几个月前我做了一个家庭作业,并在C++中完成了作业,但现在我想做BASH,因为我更喜欢它。 这是我的密码: #!/bin/bash for ((teamPlayer = 1 ; teamPlayer <= 5; teamPlayer++ )); do for ((bowlingGame = 1; bowlingGame <=3; bowlingGame++)); do read -p "Please enter

我写保龄球剧本是为了好玩。几个月前我做了一个家庭作业,并在C++中完成了作业,但现在我想做BASH,因为我更喜欢它。 这是我的密码:

#!/bin/bash

for ((teamPlayer = 1 ; teamPlayer <= 5; teamPlayer++ )); do

        for ((bowlingGame = 1; bowlingGame <=3; bowlingGame++)); do

            read -p "Please enter the bowling score for Player number $teamPlayer in game number $bowlingGame: "

                    while [[ -z $REPLY  ]] || (( $REPLY > 300 ||  $REPLY < 1 )) || [[ ! $REPLY =~ [[:digit:]] ]]; do

                        if ((teamPlayer >=1 )); then 
                            (( bowlingScores +- REPLY ))
                            ((teamPlayer-1))
                            ((bowlingGame-1)) 
                        fi

                        echo -e "\nError Try Again!"

                        read -p "Please enter the bowling score for Player number $teamPlayer in game number $bowlingGame: "
                    done

            (( bowlingScores += REPLY ))

    done

    (( bowlingScores += average ))

    echo "The average for player number $teamPlayer is $((average/3))" 

    (( average--))

done

echo "The average score for the team is $((bowlingScores/15))"
#/bin/bash
对于((teamPlayer=1;teamPlayer=1));然后
((BowlingCores+-回复))
((teamPlayer-1))
((保龄球游戏1))
fi
echo-e“\n错误,请重试!”
阅读-p“请在游戏编号$bowlingGame中输入玩家编号$teamPlayer的保龄球分数:”
完成
((bowlingScores+=回复))
完成
((保龄球得分+=平均值))
echo“玩家数量$teamPlayer的平均值为$((平均值/3))”
((平均——)
完成
echo“该队的平均得分为$((保龄球得分/15))”
问题是当我试图得到每个玩家的平均值时,平均值总是零。我只想在显示平均值时减小平均值。另一个问题是,如果我不减少这个值,在玩家1之后的每个玩家都会得到一个错误的平均值

任何帮助都将不胜感激

编辑:开始工作了。这是新代码

#!/bin/bash

for ((teamPlayer = 1 ; teamPlayer <= 5; teamPlayer++ )); do

        for ((bowlingGame = 1; bowlingGame <=3; bowlingGame++)); do

            read -p "Please enter the bowling score for Player number $teamPlayer in game number $bowlingGame: "


                    while [[ -z $REPLY  ]] || (( $REPLY > 300 ||  $REPLY < 1 )) || [[ ! $REPLY =~ [[:digit:]] ]]; do

                        if ((teamPlayer >=1 || bowlingGame >=1 )); then 
                            (( bowlingScores +- REPLY ))
                            ((teamPlayer >=1)) && ((teamPlayer-1))
                            ((bowlingGame-1)) && ((teamPlayer-1))
                        fi

                        echo -e "\nError Try Again!"

                        read -p "Please enter the bowling score for Player number $teamPlayer in game number $bowlingGame: "
                    done

            (( bowlingScores += REPLY ))


            (( average += REPLY ))

    done



    echo "The average for player number $teamPlayer is $((average/3))" 

    average=0

done

echo "The average score for the team is $((bowlingScores/15))"

echo $bowlingScores
#/bin/bash
对于((teamPlayer=1;teamPlayer=1 | |保龄球>=1));然后
((BowlingCores+-回复))
((teamPlayer>=1))&((teamPlayer-1))
((保龄球游戏-1))&((队员-1))
fi
echo-e“\n错误,请重试!”
阅读-p“请在游戏编号$bowlingGame中输入玩家编号$teamPlayer的保龄球分数:”
完成
((bowlingScores+=回复))
((平均+=答复))
完成
echo“玩家数量$teamPlayer的平均值为$((平均值/3))”
平均值=0
完成
echo“该队的平均得分为$((保龄球得分/15))”
echo$bowlingScores
此部分:

(( bowlingScores +- REPLY ))
((teamPlayer-1))
((bowlingGame-1))
应该是:

(( bowlingScores += REPLY ))
((teamPlayer-=1))
((bowlingGame-=1))

检查:

您不必重复问题标题中的标签,标签本身就足够了。此答案内容正确。还要注意,bash只能执行整数运算。如果你(OP)期望浮点数作为答案,你赢了;我无法通过简单的除法得到它。谢谢klashxx。在回到网站之前,我已经修复了第一部分。我一定会查看链接。但是,我不认为teamPlayer和bowlingGame的变量应该变成-=1。我只想在它们等于1时减少它们。我将发布我的新代码。