Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: deathfish 16 Listopadu 2012, 21:48:23

Název: bash script - odpocitavani
Přispěvatel: deathfish 16 Listopadu 2012, 21:48:23
Prosím pomozte mi s jednoduchým skriptem na odpočítávání, který by zobrazoval odpočet 3 minut.
Našel jsem dva skripty, ale
první  při odpočtu správně zobrazuje jen jednociferné číslo, např 9 vteřin takto: 9... 8... 7.... atd
při odpočtu dvou a víceciferných čísel odpočítává takto např 19 vteřin: 11119.... 11118... 11117..atd
Kód: [Vybrat]
#!/bin/bash
seconds=9
echo -n "cislo je $seconds"
sleep 1


while [ $seconds -ge 0 ]

do
sleep 1
echo -en "\b$seconds"

seconds=$(expr $seconds - 1 )
done

Druhý script zase píše každou vteřinu na nový řádek:
10
9
8
atd...
Kód: [Vybrat]
#!/bin/bash
seconds=10
(
for i in $(seq $seconds -1 1); do
    echo "$i seconds to end...";
    sleep 1;
done;
echo "end!")
sleep 2
Jde některý script překopat tak aby na jednom řádku odpočítal 180 vteřin nebo ještě lépe 3:00 min ?
Název: Re:bash script - odpocitavani
Přispěvatel: Vojtěch Trefný 16 Listopadu 2012, 23:23:53
Kód: [Vybrat]
#!/bin/bash
seconds=19
echo -n "cislo je $seconds"
sleep 1


while [ $seconds -ge 0 ]

do
sleep 1

echo -en "\r`tput el`$seconds"

seconds=$(expr $seconds - 1 )
done

Vysvětlení: "\b" posune kurzor o jedno doleva, takže u jednociferných čísel to funguje hezky -- vypíše se devítka, kurzor se posune doleva a napíše osmičku -- ale u dvouciferných to jaksi nefunguje (vypíše se 11, posune se o jedno doleva a napíše 10, takže máme rázem 110). Já použil "\r", které posune kurzor na začátek řádku a ten jsem pak pomocí "tput el" vymazal.

Minuty: Chceš-li minuty/hodiny atp. tak si ten skript musíš rozšířit o funkci, která z (například) "185 sekund" zjistí kolik to je minut. (Hint: 185 / 60 = 3 a 185 % 60 = 5.)
Název: Re:bash script - odpocitavani
Přispěvatel: deathfish 19 Listopadu 2012, 10:53:38
děkuji fachá skvělě,
A ještě drobnost existuje nějaká česká stránka s vysvětlením Bash příkazů ?
Něco jako toto ale česky:
Kód: [Vybrat]
http://ss64.com/bash/index.html
Název: Re:bash script - odpocitavani
Přispěvatel: ntz_reloaded 19 Listopadu 2012, 10:57:19
ceskejch serialu/stranek o skriptovani v bashi je fakt spousta ... pouzij prosim google
Název: Re:bash script - odpocitavani
Přispěvatel: Cuore 19 Listopadu 2012, 15:47:41
mé oblíbené
http://www.abclinuxu.cz/serialy/bash (http://www.abclinuxu.cz/serialy/bash)
http://www.linuxexpres.cz/praxe/serial-o-bashi (http://www.linuxexpres.cz/praxe/serial-o-bashi)