Как я могу увеличить значение в массиве скриптов bash на 1? - PullRequest
5 голосов
/ 19 ноября 2011

Я пытаюсь увеличить значение в массиве на 1, используя следующий код, однако у меня возникли некоторые проблемы с ним. Пожалуйста, кто-нибудь может мне помочь?

myArray[$position]=((${myArray[$position]}++))

1 Ответ

17 голосов
/ 19 ноября 2011

Попробуйте это

 myArr[3]=7
 (( myArr[3]++ ))
 echo ${myArr[3]}

 # output
 8

(( .... )) может выполнять математические операции bash / ksh, и переменные, на которые есть ссылки внутри, не должны быть переданы, как в вашем примере, вы, вероятно, думаете,аналогичной конструкции var=$(( ... MathStuff ...)) OR var=$( ... stringStuff ... ) (обратите внимание на '$' перед открытием пары).

Также обратите внимание, что внутри (( ... )) вам не нужно использовать начальный '$' для любых математических переменных, таких как $ pct или $ counter.Если вы используете аргументы скрипта или функции, такие как $ 1, $ 2, ... $ N, то вам нужно использовать $, поэтому вместо значения «1» используется значение $ 1.Спасибо @ChrisDown за напоминание!

Надеюсь, это поможет.

...