Portál AbcLinuxu, 27. července 2025 20:40


Dotaz: Jak vyřešit cyklus

23.6.2010 20:39 Jackass
Jak vyřešit cyklus
Přečteno: 447×
Odpovědět | Admin
Ahoj ahoj,

mám takový dotaz

mám soubor.txt a v něm určitěj počet záznamů, spočítám ty záznamy a pokud je tam více než jeden, tak je všechno ok, ale pokud je tam 0 a míň, tak udělám sleep2h (to jest těsně předpůnocí) a pak ten script spustím znovu. Soubor.txt je dynamická proměnná. Takže v ten jeden den to můžu zkoušet nekonečně krát, druhý den pak pouštím druhý script, který je stejný, akorát místo novédynamické proměnné soubor.txt je tam stará z předchozího.

A jak mám zajistit cyklem, aby se ty záznamy počítaly do nekonečna, dokud tam nebude víc než 0 záznamů?

dám malou ukázku,snad to pochopite, je to pro mě těžký vysvětlit.

pocet=`wc -l $prom.txt | awk '{print $1}'` if [ $pocet -gt "0" ] ;

then echo"ok"

else sleep 2h // ještě je stavající den,další den už pouštím script2,kde je nazevsouboru = stara promenna // sh script

fi

teď už je nový den, a potřeboval bych, aby celý den to zkoušelo počítat záznamy, dokud tam nebude víc než 0, třeba co hodina

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Amarok avatar 23.6.2010 21:54 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: Jak vyřešit cyklus
Odpovědět | | Sbalit | Link | Blokovat | Admin
aby celý den to zkoušelo počítat záznamy, dokud tam nebude víc než 0
Zaprve by ten dotaz mel prijit do programatorske poradny. A jinak vubec nechapu, proc to ma "pocitat zaznamy"? Co s tim vypoctem? Chtelo by to upresnit, o co se vlastne jedna.
GNUniverse - May the source be with you...
25.6.2010 10:43 majo
Rozbalit Rozbalit vše Re: Jak vyřešit cyklus
bash nie je programovaci jayzyk, ale interpret prikazov...
25.6.2010 11:12 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak vyřešit cyklus
Zas bych to nepřeháněl ze striktním zařazením :):
„Bash však není jen velmi výkonným shellem, ale také mocným scriptovacím jazykem. Podporuje práci s proměnými, cykly while, for, do, funkce a mnoho dalšího.“ viz cs.wikipedia.org
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
Amarok avatar 25.6.2010 13:09 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: Jak vyřešit cyklus
Ja bych ho dokonce i oznacil za programovaci jazyk, podle me je rozdil mezi "skriptovaci" a "programovaci" prakticky nulovy, nezajima me, jestli se to musi kompilovat nebo ne, proste programovat se da i v bashi. Majo mel radsi napsat reseni a neposkakovat nad definici :)
GNUniverse - May the source be with you...
Zdeněk Zámečník avatar 24.6.2010 00:23 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: Jak vyřešit cyklus
Odpovědět | | Sbalit | Link | Blokovat | Admin

Nevím, jak přesně to myslíš, ale pokud se to pokusím shrnout, tak Je třeba v cyklu kontrolovat počet řádek v nějakém souboru. Jakmile je v souboru jeden anebo více řádek, vypíše se hláška a skript skončí. Dál už si nejsem úplně jist, ale asi je to tak, že tento skript má běžet pouze jeden den. Další den už se pouští jiný.

To, co jsem pochopil by šlo řešit například takto:

#!/bin/bash
while true; do                           # nekonečný cyklus
  last_day=$(date +%w)                   # číslo aktuálního dne
  if [ $(wc -l $prom.txt) -gt 0 ]; then  # kontrola počtu řádků v souboru
    echo "Byly nalezeny nejake zaznamy"
    break                                # opuštění cyklu
  else
    sleep 2h
  fi
  if [ $last_day -ne $(date +%w) ]; then # kontrola, zda již není nový den
    exit                                 # ukončení skriptu
  fi
done

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.