2016-08-22 38 views
0

此代碼是我目前正在執行的項目的一部分。我想將26添加到數組中的負值元素中。這裏是我在bash中編寫的簡單代碼,但輸出不會改變,並且它不顯示命令。誰能幫我請:如果在bash中使用數組條件聲明

declare -a B 
    B[0]=5 
    B[1]=-11 
    B[2]=-14 
    B[3]=25 

    for((i=0; i<4; i++))do 
     if [[ $B{[i]} < 0 ]]; then 
      B[$i] ="((B[$i] + 26))" 
     fi 
    done 
    echo ${B[@]} 

預期輸出:

5 15 12 25 

但我的代碼實際輸出:

Line ##: B[1]: command not found 
    Line ##: B[2]: command not found 
    5 -11 -14 25 
+2

難道你[shellcheck](http://www.shellcheck.net/)這個? –

+2

在賦值中,您不能在'='之前或之後留出空格。 – Barmar

回答

1

這種替換:

declare -a B 
B[0]=5 
B[1]=-11 
B[2]=-14 
B[3]=25 

for((i=0; i<4; i++))do 
    if ((${B[i]} < 0));then 
     ((B[$i] += 26)) 
    fi 
done 
echo ${B[@]}