LINUX.ORG.RU

уменьшить число элементов в массиве

 , ,


0

2

что-то не пойму, возможен ли в bash сабж в принципе?

$ arr=(1 2 3 4 5)
$ echo ${#arr}
5
$ unset arr[5]
$ echo ${#arr}
5

видно, что этот способ не работает, но может есть какой-нибудь другой?

upd: это на самом деле на bash а zsh



Последнее исправление: FeelUs (всего исправлений: 2)

а давно массивы в баше начали задаваться как

#arr
?

i_gnatenko_brain ★★★★
()
$ arr[0]=q
$ arr[1]=w
$ arr[2]=e
$ echo ${#arr[*]}
3
$ unset arr[2]
$ echo ${#arr[*]}
2
man bash

${#name[subscript]} expands to the length of ${name[subscript]}.
If subscript is * or @, the expansion is the number of elements in the array.

LinuxUser ★★★
()
Ответ на: комментарий от LinuxUser

да, совсем странно: в bash элементы нумеруются с 0 и все работает, а в zsh - с 1, и ничего не работает

OK, тогда я буду реализовывать кроссоболочечный стек в одной переменной

FeelUs
() автор топика

unset не сработает, делай через список

arr=(«${arr[@]:0:3}» «${arr[@]:5}»)

Spoofing ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.