如何评估“if”语句中的算术表达式?

H-t*_*own 6 bash

这是我的脚本:

#!/bin/bash 
num=1

while [ $num -lt 100 ]
do
if [ $num % 3 -eq "0" ] 

then      
echo "fizz"

elif [ $num % 5 -eq "0" ]
then
echo "buzz"

elif [ $num % 3 -eq "0" ] && [ $num % 5 -eq "0" ]
then          
echo "fizzbuzz" 

else
echo $num

fi

   ((num++))

done
Run Code Online (Sandbox Code Playgroud)

它一直在说bash: [: too many arguments

Eri*_*lho 5

正确的语法是:

if [ $(($num % 3)) -eq "0" ]
Run Code Online (Sandbox Code Playgroud)

来自man bash

算术展开

算术扩展允许对算术表达式求值并替换结果。算术展开的格式为:$((expression))

$num % 3必须先计算表达式,然后才能使用 进行比较-eq