LINUX.ORG.RU
решено ФорумAdmin

Bash массивы

 , ,


0

1

Народ, хелпните. Есть массив, в который записываю строки, к примеру первый строка

first check 0
вторая
second check 1
. Теперь надо вывести элементы каждый на новой строке. Не могу это реализовать, эти 2 строки попадая в массив становятся 6ю его элементами и каждый с новой строки. Может вывести в одной строке и как-то обрабатывать в пайпе, скажем после цифры делать новую строку. Подскажите как реализовать.



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

Вы не такого хотели?

declare -a arr
IFS="\xFF"
arr[0]='first check 0'
arr[1]='second check 1'

for a in ${arr[@]}; do
 echo -e "a='$a'"
done

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

Немного не то. Эти строки, попадающие в массив, результат проверки.

declare -a arr=()
for (( i=0; i < 5; i++ ))
do
  STATUS=$(command)
  arr+=("$STATUS")
done

Нужно сначала циклом массив заполнить, после вывести каждый элемент на новой строке. Но в этом типа массива каждый элемент это все, через пробел. В такой ситуации как ассоциативным массивом вырулить не знаю. Хотя!! Можно индекс в таком виде

arr[$i]
в цикле использовать?

achilles_85
() автор топика
Последнее исправление: achilles_85 (всего исправлений: 1)
Ответ на: комментарий от achilles_85

Но в этом типа массива каждый элемент это все, через пробел.

Долго думал, не осилил расшифровать, разверните мысль плиз. А то, если это то что я подумал, то в моем примере не случайно IFS="\xFF"

Можно индекс в таком виде
arr[$i]
в цикле использовать?

Да

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

у него заполнен массив уже поэлементно arr[0] == ‘first’ arr[1] == ‘check’ и т.д. ему надо просто брать по три элемента и выводить их как строку вот и вся задача.

abcq ★★
()
Ответ на: комментарий от anc
for (( i=0; i < 3; i++ ))
do
  arr+=(check $i)
done
echo ${arr[@]}

В выхлопе увидим

check 0 check 1 check 2
Что хотел сказать. Пишу я, якобы, 3 элемента в массив, а по факту это 6. Сейчас попробую индексами как в вашем примере

achilles_85
() автор топика
Ответ на: комментарий от abcq

Все верно. Но грабли еще в том, что не уверен я в именно 3х элементах, может меньше/больше будут, не я музыку заказываю) А вот то, что в конце строк будут цифры, то это 100%

achilles_85
() автор топика
Последнее исправление: achilles_85 (всего исправлений: 1)
Ответ на: комментарий от achilles_85

ну тогда нужен какой-то маркер или другое заполнение, возможно другая структура данных, а не массив. Писать код не зная входных данных невозможно Ну вот тогда и ориентируйтесь на них, читать элементы до цифры включительно, потом вывести и продолжить.

abcq ★★
()
Последнее исправление: abcq (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.