У меня есть массив, содержащий некоторые элементы, но я хочу поместить новые элементы в начало массива; Как я могу это сделать?
bash
shell-script
array
Гаурав К.С.
источник
источник
ARRAY+=('foo')
Ответы:
Чтобы добавить элемент в начало массива, используйте.
Как правило, вы бы сделали.
Чтобы добавить элемент в конец массива, используйте.
Или вместо
Как правило, вы бы сделали.
Чтобы добавить элемент к определенному индексу массива, используйте.
Допустим, мы хотим добавить элемент в позицию Index2 arr [2] , мы бы фактически слились с нижними подмассивами:
Получить все элементы с индексом position2 до последнего arr [2] , arr [3] , ....
Удаление элемента из массива
В дополнение к удалению элемента из массива (скажем, элемента № 2) нам нужно объединить два подмассива. Первый вложенный массив будет содержать элементы перед элементом # 2, а второй вложенный массив будет содержать элементы после элемента # 2.
${arr[@]:0:2}
получит два элемента arr [0] и arr [1] начинается с начала массива.${arr[@]:3}
получит все элементы от index3 arr [3] до последнего.Другая возможность удалить элемент
Использование
unset
(фактически присваивает элементу значение 'null')Используйте шаблон замены, если вы знаете ценность своих элементов.
источник
arr+=(element)
иunset arr[2]
(что должно бытьunset -v 'arr[2]'
!), Предполагается использование не разреженных массивов. Также обратите внимание, чтоarr=( "${arr[@]/PATTERN/}" )
количество элементов не изменяется. Все, что он может сделать, это заменить их пустой строкой.Обратите внимание, что массивы в
bash
(скопированные из ksh) являются довольно ассоциативными массивами.создаст новый
$a
массив сnewvalue
as${a[0]}
и элементами исходного массива, добавленными в порядке их ключей с ключами 1, 2 ...Например, если у вас было:
Это объясняет, почему для этого нет встроенного оператора.
Если вы хотите вставить
newvalue
as${a[0]}
и сдвинуть все остальные ключи на один, вам понадобится временный массив:Оболочки типа
zsh
илиyash
с обычными массивами имеют операторы для этого:zsh
:(также работает для добавления строк в скалярные переменные)
yash
:источник
источник