Удалить запись из массива

Я хочу сделать что-то. как это:

foo=(a b c)
foo-=b
echo $foo # should output "a c"

Как я могу удалить запись из массива? foo- = b не работает.

Удаление должно работать независимо от того, где находится запись.

23
задан Albert 8 August 2010 в 23:39
поделиться

2 ответа

Для удаления номера элемента $i: a=("${(@)a[1,$i-1]}" "${(@)a[$i+1,$#a]}")

(Более простая конструкция a=($a[1,$i-1] $a[$i+1,$#a]) также удаляет пустые элементы.)

ДОБАВЛЕНО:

Для удаления любого появления b: a=("${(@)a:#b}")
:# - иероглиф для удаления совпадающих элементов; """ и (@) - для корректной работы с массивами, даже если они содержат пустые элементы.

33
ответ дан 29 November 2019 в 00:58
поделиться

foo = (1 2 3)

shift foo

print $ foo дает: 2 3

Итак, это удаляет первый элемент (это то, что вы хотите?)

[отредактировано]

вместо этого удалите i-й элемент с помощью

foo [$ i] = ()

.

4
ответ дан 29 November 2019 в 00:58
поделиться