LINUX.ORG.RU

Первый элемент bash массива пропадает в командной строке

 


0

2

Доброго дня

Проверьте, пожалуйста, у себя в командной строке:

$ A=("one" "two" "three") ; echo "${A[0]} - ${A[1]} - ${A[2]}"
one - two - three

$ echo "${A[0]} - ${A[1]} - ${A[2]}"
 - two - three
Почему в результате второй команде нет первого элемента?

UPD: Еще странность: на только что запущенном шелле:
$ [[ -v A ]] && echo Exists
Exists
Куда копать?
$ bash --version
GNU bash, version 4.3.42(1)-release (i686-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

★★★★★

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

$ A=("one" "two" "three") ; echo "${A[0]} - ${A[1]} - ${A[2]}"
one - two - three
$ echo "${A[0]} - ${A[1]} - ${A[2]}"
one - two - three


$ bash --version
GNU bash, version 4.3.42(1)-release (x86_64-pc-linux-gnu)

v9lij ★★★★★
()
$ bash --version
GNU bash, version 4.3.42(1)-release (x86_64-unknown-linux-gnu)
$ A=("one" "two" "three") ; echo "${A[0]} - ${A[1]} - ${A[2]}"
one - two - three
➜ zsh --version
zsh 5.2 (x86_64-unknown-linux-gnu)
➜ A=("one" "two" "three") ; echo "${A[0]} - ${A[1]} - ${A[2]}"
 - one - two
➜ echo ${A[3]}
three
grazor ★★
()
Ответ на: комментарий от v9lij

Жесть.
Куда копать? Где/как можно объявить переменную так, чтобы потом нельзя было присвоить первое значение?

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

Всё, решил.

Была объявлена в функции PROMPT_COMMAND (отвечающей за PS1) в .bashrc . А ведь все переменные в bash по умолчанию глобальные...

Kroz ★★★★★
() автор топика
Последнее исправление: Kroz (всего исправлений: 2)
Ответ на: комментарий от NeXTSTEP

С другими переменными (не A) воспроизводится?

Нет.
Уже нашёл - см. выше.

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