Я хочу сделать что-то. как это:
foo=(a b c)
foo-=b
echo $foo # should output "a c"
Как я могу удалить запись из массива? foo- = b
не работает.
Удаление должно работать независимо от того, где находится запись.
Для удаления номера элемента $i
: a=("${(@)a[1,$i-1]}" "${(@)a[$i+1,$#a]}")
(Более простая конструкция a=($a[1,$i-1] $a[$i+1,$#a])
также удаляет пустые элементы.)
ДОБАВЛЕНО:
Для удаления любого появления b
: a=("${(@)a:#b}")
:#
- иероглиф для удаления совпадающих элементов; """
и (@)
- для корректной работы с массивами, даже если они содержат пустые элементы.
foo = (1 2 3)
shift foo
print $ foo
дает: 2 3
Итак, это удаляет первый элемент (это то, что вы хотите?)
[отредактировано]
вместо этого удалите i-й элемент с помощью
foo [$ i] = ()
.