Вопрос:

Если оператор с условиями массива в Bash

arrays bash shell if-statement for-loop

540 просмотра

1 ответ

45 Репутация автора

Этот код является частью проекта, который я сейчас делаю. Я хочу добавить 26 в минус значения элементов в массиве. Вот простой код, который я написал в 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
Автор: Mohamed Nuzhy Источник Размещён: 22.08.2016 09:12

Ответы (1)


1 плюс

1253 Репутация автора

Замените это на это:

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[@]}
Автор: michael501 Размещён: 22.08.2016 09:24
Вопросы из категории :
32x32