我正在编写一个简单的 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 ))"
在询问用于调试的循环数之前打印numoccurences
和suitoccurences
。
关于bash - BASH 脚本中靠近 `%` 运算符的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37129291/