bash - BASH 脚本中靠近 `%` 运算符的语法错误

标签 bash modulo operation

我正在编写一个简单的 bash 脚本来计算随机抽牌的次数。我将它们存储在一个数组中,当打印出结果时,每抽出 10 次卡片,我就会以一种直方图样式输出一个“*”。

尽管如此,我在终端上编译时不断收到此错误:


“task1.sh:第 29 行:%10:语法错误:需要操作数(错误标记为“%10”)

task1.sh:第 33 行:%10:语法错误:需要操作数(错误标记为“%10”)”


似乎无法弄清楚为什么。提前感谢您的帮助。

#!/bin/bash
randomdraw(){
 Suits="Clubs Diamonds Hearts Spades"
 suit=($Suits)

 Denominations="2 3 4 5 6 7 8 9 10 Jack Queen King Ace"
 denomination=($Denominations)

 num_suits=${#suit[*]}
 num_denominations=${#denomination[*]}

declare -a numoccurences

declare -a suitoccurences

for ((x=0 ; $x<$loopnum ; x=$x+1));
    do
 (( numoccurences[$(( RANDOM%num_denominations ))]++ ))
 (( suitoccurences[$(( RANDOM%num_suits ))]++ ))
    done
}

echo "How Many Random Draws?: "
read loopnum
randomdraw loopnum

for ((x=0 ; $x<$num_denominations ; x=$x+1));
    do
        let "rounder=$(( ${numoccurences[x]} % 10 ))"


        if [ $rounder -ge 5 ];
            then
                let "starnum=$(( $(( ${numoccurences[x]} / 10 )) + 1 ))"
            else
                let "starnum=$(( ${numoccurences[x]} / 10 ))"
        fi
        echo "${denomination[x]}: "
        for ((k=0 ; $k<$starnum ; k=$k+1));
        do
            echo "*"
        done

    done

最佳答案

您的 num_denominations 数组大部分是空的,而

let "rounder=$(( ${numoccurences[x]} % 10 ))"

被评估为

let "rounder=$(( % 10 ))"

在询问用于调试的循环数之前打印numoccurencessuitoccurences

关于bash - BASH 脚本中靠近 `%` 运算符的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37129291/

相关文章:

bash - 如何检测当前正在 Linux 中播放的声音?

linux - docker 容器中的环境变量 - 它是如何工作的?

linux - 你如何在 Linux 中批量重命名文件?

c++ - 如何在 C++ 中有效地找到具有给定余数的产品?

ios - 在应用程序生命周期内阻止Alamofire请求

python - 在终端上使用 ppa 命令时出现问题

combinations - 求 nCr mod M,其中 M 不是素数

java - 如何对两个 Number 实例使用模?

java 位操作 >>> 移位

javascript - 按位运算在运行时容易失败 typescript