-
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