簡體   English   中英

bash shell腳本中的模量函數

[英]Modulus function in bash shell script

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'附近的語法錯誤” 我的條件陳述中有什么錯誤?

取決於$lenPT的值的if ... else不必要的 ,因為$lenPT永遠不會在循環內更改。 這些分配是如此相似,以至於if邏輯可以用算術代替。 例:

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

您需要在]]前加一個空格。

   if [[ $(($lenPT % 2)) == 0 ]]; then

空間很重要,請參閱Barmar的答案 如果要在同一行上加上[[ ]]則還需要在分號[[ ]] then

可以使用(( ))條件來代替繁瑣的[[ $(( )) ... ]]組合,該條件的內容在算術上下文中求值:

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

您甚至不需要在此構造中使用$lenPTlenPT就足夠了(有關詳細信息,請參見手冊中的條件構造 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM