Эти сообщения обычно возникают из-за сбоев во время загрузка списка или глюк в зеркале. Вы можете исправить это, удалив неверные списки:
$ sudo rm /var/lib/apt/lists/partial/archive.ubuntu.com_ubuntu_dists_saucy_universe_binary-amd64_Package
и обновив с помощью sudo apt-get update
. Если это все же произойдет, используйте другое зеркало или сначала немного подождите.
Посмотрите, что происходит с массивом при его инициализации:
$ i=0; for k in a b c d; do A[$k]=$((i++)); done; declare -p A
declare -a A=([0]="3")
Присутствует только один элемент, и он имеет нулевой индекс.
По умолчанию массивы индексируются числами , и все числовые значения индексов, которые вы использовали, равны нулю. На самом деле, в арифметическом контексте, подобно индексу обычного массива, строка принимается как имя переменной, и используется значение этой переменной. Итак, если мы присвоим a
, b
... числам, то получим что-то другое:
$ a=123; b=456; c=789; d=999; i=0;
$ for k in a b c d; do A[$k]=$((i++)); done;
$ declare -p A
declare -a A=([123]="0" [456]="1" [789]="2" [999]="3")
Чтобы на самом деле использовать сами строки в качестве индексов, сначала объявите массив как ассоциативный массив с помощью declare -A arrayname
илиtypeset -A arrayname
:
$ unset A; declare -A A; i=0;
$ for k in a b c d; do A[$k]=$((i++)); done; declare -p A
declare -A A=([a]="0" [b]="1" [c]="2" [d]="3" )