Strona 1 z 1

Bash, wczytywanie wartości do tablic

: 01 września 2012, 22:49
autor: m_kordi
Witam!
Mam kilka plików z danymi znajdującymi się w 1 kolumnie:lili_data.txt, lina_data.txt, lik_data.txt. Chciałbym te dane wpisać do tablicy, ale tak by utworzyć 3 niezależne tablice z wartościami.

Próbowałam to zrobić w następujący sposób:

Kod: Zaznacz cały

for x in li
do
for y in li na k
do

zmienna=()
  k=0
  for i in `cat '$x$y'_data.txt`
  do
  '$x$y'_zmienna[k]=$i
  k=$((k+1))
 done
done
done
Niestety to nie działa. Czy macie jakiś pomysł, jak wybrnąć z tej sytuacji?

: 02 września 2012, 12:44
autor: Rafal_F
Skoro pliki są tylko 3, to napisz te 3 pętle osobno zamiast jednej, bo zajmie to o wiele mniej czasu niż głowienie się jak to zrobić w taki sposób.

: 02 września 2012, 13:00
autor: m_kordi
Właśnie plików mam dużo więcej. Podałam tylko przykładowy problem. Udało mi się to napisać jako skrypt:

Kod: Zaznacz cały

 for y in lili lina lik
   do

     zmienna=()
     k=1
      for i in `cat "${x}${y}"_data.txt`
       do
         name="${x}${y}"_dim
         eval  "name[$k]=$i"

           echo -n " $name[$k] = "  
           eval echo \${name[k]}
           k=$((k+1))
       done
Teraz próbuję odwołać się do poszczególnych tablic poza pętlą:

Kod: Zaznacz cały

 echo ${"${x}${y}"_dim[1]} 
i wyskakuje i błąd:

Kod: Zaznacz cały

bad substitution
Natomiast jeśli napiszę:

Kod: Zaznacz cały

 echo ${lili_dim[1]} 
nic mi nie wyświetla.
Czy macie jakiś pomysł co z tym zrobić?

: 02 września 2012, 18:16
autor: olx
A po co Ci pętla, do wczytania tych danych? Nie prościej:

Kod: Zaznacz cały

#!/bin/bash

tablica1=(`awk ' { print $1 } ' dane1.txt`)
tablica2=(`awk ' { print $1 } ' dane2.txt`)
tablica3=(`awk ' { print $1 } ' dane3.txt`)
 
?

: 02 września 2012, 18:50
autor: kodama
Tudzież można zrobić:

Kod: Zaznacz cały

tablica_1=( $(cat plik_1.txt) );
...
...