Bash każdy rząd w innej zmiennej

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
xomrk
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 03 sie 2011, 18:25
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86

Bash każdy rząd w innej zmiennej

Post autor: xomrk »

Witam

pisałem ostatnio skrypt podliczający ilość miejsca zużytego na dysku i miałem problem z takim czymś:

Jak miałem wynik polecenia np

rząd 1
rząd 2
rząd 3
rząd 4

to przy użyciu tail i head zrobiłem dla 4 zmiennych coś takiego

wolne1=`df -h | grep "/dev/sd" | cut --bytes=29-31 | head -n 1 `
wolne2=`df -h | grep "/dev/sd" | cut --bytes=29-31 | head -n 2 | tail -n 1 `
wolne3=`df -h | grep "/dev/sd" | cut --bytes=29-31 | tail -n 2 | head -n 1 `
wolne4=`df -h | grep "/dev/sd" | cut --bytes=29-31 | tail -n 1 `


lecz teraz chce napisać skrypt do konwertowania plików wideo i niestety nie mam zamiaru robić w ten sposób. Dodaje że ilośc plików czyli ( rządów ) nie będzie z góry ustawiona ( zależne od ls *.avi ).

Czy są jakieś prostsze sposoby aby każdy rząd umieścić w innej zmiennej ?
Awatar użytkownika
Dwimenor
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1260
Rejestracja: 18 mar 2008, 16:14
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Architektura: x86_64

Re: Bash każdy rząd w innej zmiennej

Post autor: Dwimenor »

Czy koniecznie potrzebujesz każdy plik przypisywać do innej zmiennej? Nie możesz zrobić pętli?

Kod: Zaznacz cały

for plik in `ls *.avi`;do
operacje na $plik
done
Albo przypisać sobie wszystkie filmy do tablicy i odwoływać się do jej kolejnych elementów.

Kod: Zaznacz cały

tablica=(`ls *.avi`)
for plik in ${tablica[*]};do
operacje na $plik
done
Poniższe zdanie jest fałszywe.
Powyższe zdanie jest prawdziwe.
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Re: Bash każdy rząd w innej zmiennej

Post autor: beluosus »

@Dwimenor: Twoje rozwiązanie nie sprawdzi się dla plików ze spacjami. Naturalnym rozwiązaniem jest:

Kod: Zaznacz cały

for i in *.avi
do
    echo "$i" # przykładowa operacja
done
@xomrk: albo nie doczytałeś, albo niewiele wyniosłeś ze swojego ostatniego tematu, skoro nadal używasz "brzydkiego head-tail" nie wspominając o df-grep.
Awatar użytkownika
Dwimenor
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1260
Rejestracja: 18 mar 2008, 16:14
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Architektura: x86_64

Re: Bash każdy rząd w innej zmiennej

Post autor: Dwimenor »

Fakt, spacje wszystko rozwalą.
Poniższe zdanie jest fałszywe.
Powyższe zdanie jest prawdziwe.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości