gpt4 book ai didi

linux - bash shell 脚本中的模函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:23 24 4
gpt4 key购买 nike

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 放在同一行,你还需要在 [[ ]] 条件后面加一个分号。

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

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

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

由于 ((...)) 的退出状态在表达式计算结果为 0 时为 1(不成功),否则为 0(成功),您可以交换分支并缩短条件一点:

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

关于linux - bash shell 脚本中的模函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39136959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com