Zmienna zawierająca kilka wartości.

0

Cześć,
Mam drobny problem, parsuje sobie skryptem logi z wykonania kodu SQL, konkretnie za pomocą awk wyciągam sobie wartości ( z kilku wierszy) i wrzucam do zmiennej LIST_FILES:

LIST_FILES=`sed -n -e '/wzor_pierwszy/,/wzor_koncowy/p' /sciezka_do_pliku/plik.log | sed -e '/^\ *$/d' | sed '$d' | sed '1,1d' |  awk '{print $8}' | cut -d / -f 4-5 `

Moja zmienna LIST_FILES przyjmuje zatem wartość (są to konkretnie ścieżki do plikow na innym hoscie):

echo $LIST_FILES
/var1/logs1 /var2/log2  #ścieżki są oczywiście przykładowe

Niestety sprawia mi to problem ponieważ za pomocą pętli probujć wylistować te lokalizacje (interesują mnie pliki które w nich siedzą, tworzą one problemy i muszę znać jak najszybciej ich nazwę) jednak nie mam pomysłu jak to zrobić ponieważ gdy robię:

for x in $LIST_FILES ; do
	tablica()
	ERR_FILES=`ssh root@host_zdalny "sudo -u inny_user polecenie_zawierajace_katalog"$x"" | awk '{print $8}'`
done

zmienna ERR_FILES zawiera jedynie ostatni parametr z listy LIST_FILES ponieważ naturalnie jest nadpisywana z każdym przebiegiem. Da się jakoś dopisać wartość? Nie do końca rozumiem jak zmienna może przyjmować kilka wartość... Ewentualnie czy jest ktoś w stanie pokierować mnie jak zrobić to na talicy? Nie bardzo wychodzi mi to składniowo a potrzebuje je zwrócić na host gdzie uruchamiam skrypt.

Dopiero się uczę więc proszę o wyrozumiałość.

0

Ok, przerzuciłem się na tablice, tylko teraz nie wiem jak w pętli dodawać argumenty to tablicy:

LIST_FILES=`sed -n -e '/wzor_pierwszy/,/wzor_koncowy/p' /sciezka_do_pliku/plik.log | sed -e '/^\ *$/d' | sed '$d' | sed '1,1d' |  awk '{print $8}' | cut -d / -f 4-5 `

for x in $LIST_FILES ; do
    tablica2=(`ssh root@host_zdalny "sudo -u inny_user polecenie_zawierajace_katalog"$x"" | awk '{print $8}'`)
done

tablica2 dalej przechowuje ostatnią wartość. Starałem się tam wstawić jakąś zmienną która byłaby inkrementowana od 1 do ilości plików ale nie wiem jak to napisać.

0

Problem rozwiązałem trochę po partyzancku... mianowicie

#1 Przekazałem wyniki uruchomienia polecenia na hoście zdalnym do pliku (oczywiście na moim hoście):

for x in $LIST_FILES ; do
    ssh root@host_zdalny "sudo -u inny_user polecenie_zawierajace_katalog"$x"" | awk '{print $8}' >> /jakis_plik.txt
done

#2 Wczytuje zawartość do zmiennej:

ERR_FILES=`cat $DIR/spis_blednych.txt | sed -e '/^\ *$/d'`
		for x in $ERR_FILES ; do
			echo  "Plik "$x" jest bledny! Sprawdz to! >> /log_z_wykonania.log
		done

Może i jestem początkujący ale nie jest to szczyt moich marzeń więc gdyby ktoś jednak mógł mnie nakierować na bardziej elegancki sposób to będę wdzięczny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1