abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

dnes 08:00 | IT novinky

Andy Rubin, spoluzakladatel společnosti Android, jež byla v roce 2005 koupena Googlem, nyní CEO společnosti Essential Products, oznámil předprodej chytrého telefonu Essential. Telefon se začne rozesílat 1. září. Cena telefonu je 699 dolarů. Cena telefonu současně s 360° kamerou s rozlišením 4K byla stanovena na 749 dolarů. Kameru, v budoucnu i další příslušenství, lze k telefonu připojit pomocí konektoru s magnety.

Ladislav Hagara | Komentářů: 0
včera 13:44 | Zajímavý software

Evropská komise vydala novou verzi 1.4.0.1 svého open source v Javě naprogramovaného softwaru pro online průzkumy EUSurvey. Online dotazníky lze vytvářet na stránkách Evropské komise nebo si lze software stáhnout (zip a war) a nainstalovat lokálně. Zdrojové kódy jsou k dispozici pod licencí EUPL (European Union Public Licence).

Ladislav Hagara | Komentářů: 0
18.8. 23:55 | Komunita

Ubuntu 17.10 (Artful Aardvark) bude ve výchozím stavu zobrazovat Dok (Launcher). Jedná se o rozšíření GNOME Shellu Ubuntu Dock. To bylo forknuto z rozšíření Dash to Dock. Ukázka na YouTube [reddit].

Ladislav Hagara | Komentářů: 2
17.8. 15:33 | Nová verze

Byla vydána verze 17.08.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi. Aplikace kmag, kmousetool, kgoldrunner, kigo, konquest, kreversi, ksnakeduel, kspaceduel, ksudoku, kubrick, lskat a umbrello byly portovány na KDE Frameworks 5.

Ladislav Hagara | Komentářů: 0
17.8. 15:11 | Nová verze

Simon Long představil na blogu Raspberry Pi novou verzi 2017-08-16 linuxové distribuce Raspbian určené především pro jednodeskové miniaturní počítače Raspberry Pi. Společně s Raspbianem byl aktualizován také instalační nástroj NOOBS (New Out Of the Box Software). Nejnovější Raspbian je založen na Debianu 9 Stretch. Přehled novinek v poznámkách k vydání. Řešena je také bezpečnostní chyba Broadpwn (CVE-2017-9417).

Ladislav Hagara | Komentářů: 1
17.8. 12:33 | Nová verze

Byla vydána verze 3.2.0 programu pro skicování, malování a úpravu obrázků Krita. Přehled novinek v poznámkách k vydání a na YouTube.

Ladislav Hagara | Komentářů: 0
17.8. 11:44 | IT novinky

Minulý týden na šampionátu The International 2017 byl představen bot, který poráží profesionální hráče počítačové hry Dota 2. V nejnovějším příspěvku na blogu se organizace OpenAI o projektu více rozepsala a zveřejnila videozáznamy několika soubojů.

Ladislav Hagara | Komentářů: 7
16.8. 17:11 | Komunita

Byly zveřejněny videozáznamy přednášek z Fedora 26 Release Party konané 10. srpna v Praze.

Ladislav Hagara | Komentářů: 0
16.8. 15:33 | Komunita

Přesně před čtyřiadvaceti lety, 16. srpna 1993, oznámil Ian Murdock vydání "Debian Linux Release".

Ladislav Hagara | Komentářů: 8
16.8. 06:00 | Bezpečnostní upozornění

Ve virtualizačním softwaru Xen bylo nalezeno a opraveno 5 bezpečnostních chyb XSA-226 až XSA-230. Nejzávažnější z nich XSA-227 (CVE-2017-12137) umožňuje eskalaci privilegií a ovládnutí celého systému, tj. správce hostovaného systému se může stát správcem hostitelského systému.

Ladislav Hagara | Komentářů: 1
Těžíte nějakou kryptoměnu?
 (4%)
 (2%)
 (17%)
 (76%)
Celkem 358 hlasů
 Komentářů: 21, poslední 13.8. 09:57
    Rozcestník

    Dotaz: řešení problému v bash

    9.3.2013 14:41 Standa
    řešení problému v bash
    Přečteno: 763×
    Zdravim, poradi nekdo s timto problemem? O co se jedna. Mam promenou sel, sum a max, promena sel obsahuje cislo aktivni polozky, promena sum obsahuje hodnotu celkovy pocet vsech polozek a promena max obsahuje odnotu kolik zobrazit max polozek na stranku. Potrebuji vypsat polozky tak aby kdyz priklad bude celekem 20 polozek v promene sum a v promene max bude nastaveno 5 tak aby se vypsaly polozky 1 az 5 az do doby kdy hodnota v promene sel max+1 a oak uz vzdy po jedne dolu, nahoru bude stejny zpusob, zacne se posunovat az dosahne prvni vypsane položky. Seru se s tím již dvy dny a nejsem schopen s tim hnout. Poradi prosim nekdo. Díky moc

    Řešení dotazu:


    Odpovědi

    pepe_ avatar 9.3.2013 14:46 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Nějak nerozumim kde je problém. Pár IF a je hotovo ne.  Zkus se rozepsat pro co to vlastně chceš popřípadě vložit kód co máš. Nerozumim tomu co ti nejde.

    9.3.2013 16:25 Standa
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Par podminek :( ale jakych? Dik

    tady je kod

    #!/bin/bash
    
    ttt=("aaa" "bbb" "ccc" "ddd" "eee" "fff" "ggg" "hhh" "iii" "jjj")
    sel=0
    sum=${#itm[@]}
    max=5
    while [ 1 ]
    do
      clear
      for ((i=0; i<$max; i++ ))
      do
        if [ $sel = $i ]
        then
          echo -e "\e[5;31m ${ttt[i]} \e[0m"
        else
          echo "${ttt[i]}"
        fi
      done
    #sel=$((sel-1)) sel=$((sel+1)) sleep 1 done
    pepe_ avatar 9.3.2013 20:59 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Tohle ?   (Pohyb  kurzorovejma klávesama  UP/DOWN)  ESC konec

    #!/bin/bash
    ttt=("aaa" "bbb" "ccc" "ddd" "eee" "fff" "ggg" "hhh" "iii" "jjj")
    sel=0
    sum=${#itm[@]}
    max=10
    while [ 1 ]
    do
      clear
      for ((i=0; i<$max; i++ ))
      do
        if [ $sel = $i ]
        then
          echo -e "\e[5;31m ${ttt[i]} \e[0m"
        else
          echo "${ttt[i]}"
        fi
    done
    echo $k
    read -sn1 -t1 c
    l=`perl -e "printf('%d',ord('$c'));"`
    k="$l"
    if ((k == 66)) && ((sel < max -1 )) ; then
    let sel++
    fi
    if ((k == 65)) && ((sel > 0)); then
    let sel--
    fi
    if ((k == 27)) ; then
    break
    fi
    done
    
    pepe_ avatar 9.3.2013 21:10 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Teda tohle      UP/DOWN   a stop je ctrl+c

     

    #!/bin/bash
    ttt=("aaa" "bbb" "ccc" "ddd" "eee" "fff" "ggg" "hhh" "iii" "jjj")
    sel=0
    sum=${#itm[@]}
    max=10
    while [ 1 ]
    do
      clear
      for ((i=0; i<$max; i++ ))
      do
        if [ $sel = $i ]
        then
          echo -e "\e[5;31m ${ttt[i]} \e[0m"
        else
          echo "${ttt[i]}"
        fi
    done
    read -sn1 -t1 c
    l=`perl -e "printf('%d',ord('$c'));"`
    k="$l"
    
    if ((k == 66)) && ((sel < max -1 )) ; then
    let sel++
    fi
    
    if ((k == 65)) && ((sel > 0)); then
    let sel--
    fi
    
    
    pepe_ avatar 9.3.2013 21:52 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: řešení problému v bash

    No ještě jedna verze   (vypisuje jen 5 ale roluje)

     

     

    #!/bin/bash
    ttt=("aaa" "bbb" "ccc" "ddd" "eee" "fff" "ggg" "hhh" "iii" "jjj")
    sel=0
    sum=${#ttt[@]}
    max=5
    pos=0
    while [ 1 ]
    do
      clear
    
      for ((i=$pos; i<($pos+$max); i++ ))
      do
        if [ $sel = $i ]
        then
          echo -e "\e[5;31m ${ttt[i]} \e[0m"
        else
          echo "${ttt[i]}"
        fi
    done
    read -sn1 -t1 c
    l=`perl -e "printf('%d',ord('$c'));"`
    k="$l"
    
    if ((k == 66)) && ((sel < (sum -1) )) ; then
    let sel++
    
     if (((pos +5) < sum)); then
     let pos++
     fi
    
    fi
    
    if ((k == 65)) && ((sel > 0)); then
    let sel--
    
     if (( (pos ) > 0 )); then
     let pos--
     fi
    
    fi
    
    done
    
    10.3.2013 00:15 Standa
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Díky za kód, funguje mi pouze ten poslední ale není to jak bych to potřeboval, viz můj poslední příklad. Díky
    25.3.2013 16:23 kei.101
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Jděte doháje s těma polema v shellu :/ Až to budete potřebovat spustit někde jinde, tak se z toho zblázníte..
    David Watzke avatar 26.3.2013 09:52 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Proč by z toho bláznili? Stačí mít potřebné závislosti. Stanovíš-li si, že závislost bude Bash (určité verze), tak se pak nemůžeš divit, že to nefunguje v nějakém prehistorickém či nekompatibilním shellu.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    27.3.2013 13:27 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Tos ještě neviděl asociativní pole :D
    27.3.2013 13:45 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Nebo implementaci vícerozměrného pole ;).
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    28.3.2013 23:47 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: řešení problému v bash
    :D
    9.3.2013 18:41 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: řešení problému v bash
    az do doby kdy hodnota v promene sel max+1 a oak uz vzdy po jedne dolu,

    od slov až do doby dál už je zadání nejasné, nechybí tam nějaká slova, kusy věty či operátory? ... sel bude max+1 a pak už vždy po jedné dolů (ale co to znamená "pak už vždy po jedné dolů"? Vypisovat po jedné dolů? Jak po jedné co po jedné? Nemělo se to vypisovat po pěti? A sel se v průběhu výpisu mění?
    10.3.2013 00:14 Standa
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Přikládám ještě názornou ukázku pro mé lepší vyjádření. Výpis při nastavení proměnné MAX=5

    Spustím program a dostanu výsledek
    
    >1111111111<
     2222222222
     3333333333
     4444444444
     5555555555
    
    stisk klávesy dolů, výsledek
    
     1111111111
    >2222222222<
     3333333333
     4444444444
     5555555555
    
    stisk klávesy dolů, výsledek
    
     1111111111
     2222222222
    >3333333333<
     4444444444
     5555555555
    
    stisk klávesy dolů, výsledek
    
     1111111111
     2222222222
     3333333333
    >4444444444<
     5555555555
    
    stisk klávesy dolů, výsledek
    
     1111111111
     2222222222
     3333333333
     4444444444
    >5555555555<
     
    stisk klávesy dolů, ted prijde zmena výsledek
    
     2222222222
     3333333333
     4444444444
     5555555555
    >6666666666<
    
    stisk klávesy dolů, výsledek, tohle se opakuje až po poslední položku
    
     3333333333
     4444444444
     5555555555
     6666666666
    >7777777777<
    
    
    ***********************************
    ted stisk klávesy nahoru, výsledek
    ***********************************
    
     3333333333
     4444444444
     5555555555
    >6666666666<
     7777777777
    
    stisk klávesy nahoru, výsledek
    
     3333333333
     4444444444
    >5555555555<
     6666666666
     7777777777
    
    stisk klávesy nahoru, výsledek
    
     3333333333
    >4444444444<
     5555555555
     6666666666
     7777777777
    
    stisk klávesy nahoru, výsledek
    
    >3333333333<
     4444444444
     5555555555
     6666666666
     7777777777
    
    stisk klávesy nahoru, ted prijde zmena výsledek
    
    >2222222222<
     3333333333
     4444444444
     5555555555
     6666666666
     
    stisk klávesy nahoru, výsledek
    
    >1111111111<
     2222222222
     3333333333
     4444444444
     5555555555
    Děkuji
    pepe_ avatar 10.3.2013 01:07 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Tady ?

     

    #!/bin/bash
    ttt=("aaa" "bbb" "ccc" "ddd" "eee" "fff" "ggg" "hhh" "iii" "jjj")
    sel=0
    sum=${#ttt[@]}
    max=5
    pos=0
    center=0
    while [ 1 ]
    do
      clear
    
      for ((i=$pos; i<($pos+$max); i++ ))
      do
        if [ $sel = $i ]
        then
          echo -e ">\e[5;31m${ttt[i]}\e[0m<"
        else
          echo " ${ttt[i]} "
        fi
    done
    read -sn1 -t1 c
    l=`perl -e "printf('%d',ord('$c'));"`
    k="$l"
    
    if ((k == 66)) && ((sel < (sum -1) )) ; then
    let sel++
    
      if ((center < max)); then
      let center++
      fi
    
      if ((center == max )) && (((pos +5) < sum)); then
      let pos++
      fi
     
    fi
    
    if ((k == 65)) && ((sel > 0)); then
    let sel--
    
      if ((center > 0)); then
      let center--
      fi
    
    
     if ((center == 0 )) && (( (pos ) > 0 )); then
     let pos--
     fi
    
    fi
    
    done
    10.3.2013 15:29 Standa
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Super, díky moc za tvou ochotu a čas! Poslední otázka... ;-) a číslo účtu??
    pepe_ avatar 10.3.2013 15:38 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: řešení problému v bash

    To je nekonečná práce , přidat ještě tunu IF proti všem možnejm kombinacím , přidat  ( http://www.bashguru.com/2010/04/how-to-handle-cursor-movement-in-shell.html )   pozici zobrazení , orámování , a stále bude co vylepšovat. Nakonec to raději udělá někdo za pomoci ncurses v céčku. :)

    10.3.2013 21:53 Standa
    Rozbalit Rozbalit vše Re: řešení problému v bash
    To je nabídka? ;-)
    11.3.2013 21:52 Někdo jiný | skóre: 18 | blog: Někde jinde
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Už udělal: dialog
    24.3.2013 12:23 Veronika
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Ahoj, měla bych taky dotaz, prozradí mě někdo vzorec pro získání obsahu proměné $pos a $center když znám jenom proměnou $sel? Děkuji
    25.3.2013 17:40 Veronika
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Jasně, zase pitomá ženská co se s3r3 do programování..... Hlavně jí nikdo neraďte!!! :-(
    pepe_ avatar 25.3.2013 17:54 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Ať to čtu jak to čtu stále nevím co vlastně chcete ...

     

    Zkuste svůj požadavek upřesnit.

     

    Hodnotu těch proměnných   echo $prommena   si můžete vypsat.  Nebo nechápete princip ?  O co jde ?

    pepe_ avatar 25.3.2013 18:15 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Nebo jdi sem , pokud tam budu nebo někdo bude  :  http://cz3dtc.cz/linux.htm

    pepe_ avatar 25.3.2013 20:38 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Aha , celej kód je naprd , oprava bude : http://pastebin.com/9etQa14z

     

    Teda až to předělam.

    Děkuji za informace Veroniky která vyšťourala že je to celé na prd :)

    pepe_ avatar 26.3.2013 21:25 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Tak zde je opravená verze :

    #!/bin/bash
    start=1
    clear
    tput civis      -- invisible
    trap "stty $(stty -g)" EXIT
    stty -echo -icanon time 2 || exit $?
    KEYS="" ; IFS=$'\a'
    ttt=("Volba  1" "Volba  2" "Volba  3" "Volba  4" "Volba  5" "Volba  6" "Volba  7" "Volba  8" "Volba  9" "Volba 10" "Volba 11" "Volba 12" "Volba 13" "Volba 14" "Volba 15")
    ap=0; let start--
    pp=${#ttt[@]}
    mp=5
    if ((pp < mp)) ; then let mp=pp ; fi
    posun_seznamu=0
    center=0
    acc=5
    function zobraz ()
    {
    let tmpap=ap ; let tmpap++  
    echo -en "\033[1;1H"
    echo "ESC = Konec , ENTER = výběr volby"
    let posa=$posun_seznamu ; let posb=($posun_seznamu+$mp)
    let posa=($posa + $center) ; let posb=($posb + $center)
    echo -e "\033[1m\033[46m          \e[0m"
    for ((i=$posa; i<($posb); i++ ))
    do
    if [ $ap = $i ]
    then
    echo -e "\033[1m\033[46m \e[0m\033[1m\033[44m${ttt[i]}\e[0m\033[1m\033[46m \e[0m"
    else
    echo -e "\033[1m\033[46m \e[0m\033[30m\033[47m${ttt[i]}\e[0m\033[1m\033[46m \e[0m"
    fi
    done
    echo -e "\033[1m\033[46m          \e[0m"
    }
    
    for ((l=0; l<($start); l++ ))
    do
    zobraz
     if ((ap < (pp -1 ) )) ; then
     let ap++
     if (((center + (mp -1)) < ap)) ; then let center++ ; fi
     fi
    done
    zobraz
    while [ 1 ]; do
    while read -t 0 ; do read -s -r -d "" -N 1 -t 0.2 CHAR && KEYS="$KEYS$CHAR" || break
    done
    if [ -z "$KEYS" ]; then sleep 0.05 ; continue ; fi
    case "$KEYS" in
    $'\x1B\x5B\x42'*) 
    KEYS="${KEYS##???}"
    if ((ap < (pp -1 ) )) ; then
    let ap++
    if (((center + (mp -1)) < ap)) ; then let center++ ; fi
    fi
    zobraz
    ;;
    $'\x1B\x5B\x41'*) 
    KEYS="${KEYS##???}"
    if ((ap > 0)); then
    let ap--
    if ((ap < posa )) ; then let center-- ; fi
    fi
    zobraz
    ;;
    $'\n'*|$'\r'*) 
    KEYS="${KEYS##?}"
    echo "Vybraná položka : ${ttt[ap]} "
    tput cnorm   -- normal
    exit 0
    ;;
    $'\x1B') 
    KEYS="${KEYS##?}"
    echo "Program ukončen ..."
    tput cnorm   -- normal
    exit 0
    ;;
    [$'\x01'-$'\x1F'$'\x7F']*) 
    KEYS="${KEYS##?}"
    ;;
     *) 
    KEY="${KEYS:0:1}"
    KEYS="${KEYS#?}"
    ;;
    esac
    done
    
    pepe_ avatar 28.3.2013 14:20 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Na pastebin  http://pastebin.com/tq2XgnGe  je verze se zakázaným ctrl+c a klávesou pause (Finální verze).

    27.3.2013 13:25 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Poradil bych, ale já ten váš dotaz také nepochopil, tak jsem doufal, že někdo jiný se chytne.

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.