bash shell 脚本中的模函数

Bar*_*Tun 3 linux bash shell

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
Run Code Online (Sandbox Code Playgroud)

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

Ben*_* W. 7

空间很重要,请参阅Barmar 的回答[[ ]]如果你想放在then同一行,你还需要在条件后加一个分号。

代替繁琐的[[ $(( )) ... ]]组合,您可以使用(( ))条件,其内容在算术上下文中进行评估:

if (( lenPT % 2 == 0 )); then
Run Code Online (Sandbox Code Playgroud)

你甚至不需要$lenPT在这个构造中,lenPT就足够了(详见手册中的条件构造)。


Bar*_*mar 5

你之前需要一个空间]]

   if [[ $(($lenPT % 2)) == 0 ]]; then
Run Code Online (Sandbox Code Playgroud)