for ((i=0; i<lenPT; i++)) do
    if [[ $(($lenPT % 2))  == 0]] then
        P[i] = "$((K [0] * arrT[i] + K[2] * arrT[i+1]))"
    else
        P[i] = "$((K[1]*arrT[i-1]+K[3]*arrT[i]))"
    fi
done

我收到错误消息,指出“条件表达式中的语法错误”和“'then'附近的语法错误”。我的条件陈述中有什么错误?

最佳答案

空间很重要,请参阅Barmar's answer。如果要将[[ ]]放在同一行上,则还需要在then之后加上分号。

您可以使用条件条件下的[[ $(( )) ... ]]代替繁琐的(( ))组合,其条件是在算术上下文中求值的:

if (( lenPT % 2 == 0 )); then

您甚至不需要在此结构中使用$lenPTlenPT就足够了(有关详细信息,请参见手册中的Conditional Constructs)。

09-11 05:12