Portál AbcLinuxu, 25. dubna 2024 14:47


Dotaz: Shell skript - jak jej opakovat donekonecna?

23.10.2011 20:02 Karel Braunheld
Shell skript - jak jej opakovat donekonecna?
Přečteno: 410×
Odpovědět | Admin
Dobry den vsem,
mam cidlo vyhazujici hodnotu 1 nebo 0. Potrebuju vytvorit skript, ktery bude cist tuto hodnotu a v zavislosti na stavu cidla provede nebo neprovede prikaz. Problem je, jak zapsat skript tak aby se neustale opakoval a porad dokolecka kontroloval ono cidlo? Interval opakovani by mel byt tak 0,5 sekundy.
Diky za nakopnuti spravnym smerem.

Řešení dotazu:


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

Odpovědi

HrabalVojta avatar 23.10.2011 20:05 HrabalVojta | skóre: 23 | blog: gentoo_pentoo | Třebíč
Rozbalit Rozbalit vše Re: Shell skript - jak jej opakovat donekonecna?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nekonečná smyčka. Já se pamatuji, že spolužákům v informatice vznikala furt. Při použití while. Stačí aby se nikdy nesplnila podmínka. A na čekání se používá parametr sleep.
USE="freedom -software_patents" emerge --deep --update --newuse world
23.10.2011 20:55 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Shell skript - jak jej opakovat donekonecna?
Při použití while. Stačí aby se nikdy nesplnila podmínka.

Naopak, je potřeba, aby byla pořád splněná. V Bourne shellu to vypadá např. takto

  while true; do
    ...
    usleep 500000
  done
24.10.2011 08:07 Karel Braunheld
Rozbalit Rozbalit vše Re: Shell skript - jak jej opakovat donekonecna?
Dekuji, vyreseno:

while [ 1 -eq 1 ]; do
stav=$(cat /dev/cidlo)
if [ "$stav" = "1" ];
then echo Cidlo je sepnute; sleep 0.5s;
else echo Cidlo je rozepnute; sleep 0.5s;
fi;
done
24.10.2011 08:13 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Shell skript - jak jej opakovat donekonecna?
Ten sleep provádíte v obou větvích, takže je praktičtější dát ho až za podmíněný příkaz.
pepe_ avatar 23.10.2011 21:13 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Shell skript - jak jej opakovat donekonecna?
Odpovědět | | Sbalit | Link | Blokovat | Admin
#!/bin/bash
konec="15"
casovka="0.12"
echo "Script skonci az bude vterinovka hodin ukazovat $konec , sleep je nastaven na $casovka"
echo
echo "Counter  Datum       Cas"
echo "-----------------------------"
while true; do
sleep $casovka
pocitadlo=$[$pocitadlo + 1]
aktcas=$(date  "+%d.%m %Y  %H:%M:%S")
cas=$(date  "+%S")
if [ "$cas" = "00" ]; then
break
else
echo -en "$pocitadlo\t $aktcas \r"
fi
done
echo 

 

Něco takového ?

pepe_ avatar 23.10.2011 21:15 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Shell skript - jak jej opakovat donekonecna?
Oprava


#!/bin/bash
konec="15"
casovka="0.12"
echo "Script skonci az bude vterinovka hodin ukazovat $konec , sleep je nastaven na $casovka"
echo
echo "Counter  Datum       Cas"
echo "-----------------------------"
while true; do
sleep $casovka
pocitadlo=$[$pocitadlo + 1]
aktcas=$(date  "+%d.%m %Y  %H:%M:%S")
cas=$(date  "+%S")
if [ "$cas" = "$konec" ]; then
break
else
echo -en "$pocitadlo\t $aktcas \r"
fi
done
echo

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.