2015-12-11 3 views
4

Я действительно не знаю, как использовать bash, и у меня есть проблема. Я обычно использую python, поэтому я не знаю, как обойтись без списка. Как добавить значение в массив без удаления значения по умолчанию.Добавить значение по данному индексу без удаления

myArray=(5 6 13 14) 

Для Exemple, я хотел бы добавить 9 на индекс 2, и я тусклый, чтобы получить это:

myArray=(5 6 9 13 14) 

И не так:

myArray=(5 6 9 14) 

Очевидно, что делает myArray[2]=9 Безразлично Работает. Я мог бы добавить его и переместить все остальное с 1 налево, но я пытаюсь сделать что-то оптимизированное, поэтому, если есть решение без цикла, я бы хотел его знать :)

ответ

5

Используйте ломтики для захвата до и после частей массива, а затем построить новый массив.

n=2 
myArray=("${myArray[@]:0:n}" 9 "${myArray[@]:n}") 

Асимптотически, это не более эффективным, чем писать цикл, но, по крайней мере, оболочка обрабатывает петлю для вас внутри.

+0

Вы избили меня до этого. Но приятно знать, что это не более эффективно, чем писать цикл. –

+0

Ничего себе, это волшебство! Спасибо –

+0

Вы уточните @chepner? Что такое и что? Поскольку я пытался и не работает –

Смежные вопросы