Awk, Bash [49]

Zapisz się
Dodaj kartkę Dodaj bana
Powód wlepienia kartki
Wybierz wątek docelowy z listy lub wpisz jego ID
  • Anonim

    Katalog jakiś tam, w nim pliki, których nazwami są wyłącznie liczby, max 15 cyfrowe. Pliki mają różne rozmiary.

    Listuję zawartość, sortuję wg rozmiaru, wybieram 20 największych plików, zapisuję całość do pliku, mam w nim 20 linii dwukolumnowych z rozmiarem i nazwą.

    Rozmiary plików zmieniają się, nie zmieniają się ich nazwy (ew. pojawiają się nowe).
    Plik powinien wykonywać się powiedzmy 2x dziennie (z tym sobie poradzę) i zapisywać do tabeli w bazie mysql aktualnie 20 największych plików wraz z rozmiarami.
    Robię coś takiego:
    Nie mogę dodawać bezmyślnie do bazy, więc chciałem wykonać:

    echo "select nazwa from tabela where nazwa='$nazwa'" | mysql -N -u użyt --password=hasło baza

    i w zależności od wyniku robić inserta lub update'a.

    Ale:
    1. powyższe nie zwraca zerowej wartości nawet jeśli zapytanie sql nic nie zwróci (if [ -z *to co wyżej* ] odpada). Sam nie wiem co zwraca - pustą linię? Jeśli tak to jak to sprawić if'em?
    2. if [ '*to co wyżej*' = '$nazwa'] nie wyłapuje nic.

    Any ideas?
  • Reef

    #!/bin/bash
    # 2 ideas.
    # 1 idea to
    ZMIENNA=`echo "select nazwa from tabela where nazwa='$nazwa'" | mysql -N -u użyt --password=hasło baza`

    echo "---$ZMIENNA---" # tu zobaczysz co zwraca baza, moze jeden TAB, moze spacje, nie wiem, zobaczysz.

    # 2 idea to kasuj cala tablice przy kazdym cyklu i wgrywaj nowe, poprawne dane.
    # tracisz w ten sposob wpisy o plikach które już nie są w top20
    # jesli to nie wchodzi w gre, to sprawdz co zwraca baza i pomyslimy

    exit 0
| |

Wszystko o programowaniu w tych najprostszych i zarazem najpotężniejszych językach skryptowych. I...



Miejsca grona (0)