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 02:48 | Komunita

Greg Kroah-Hartman potvrdil, že Linux 4.9 je jádrem s prodlouženou upstream podporou (LTS, Long Term Support). Podpora je plánována do ledna 2019. Aktuální jádra s prodlouženou podporou jsou tedy 3.2, 3.4, 3.10, 3.12, 3.16, 3.18, 4.1, 4.4 a 4.9.

Ladislav Hagara | Komentářů: 0
dnes 00:11 | Zajímavý článek

Výrobce síťových prvků, společnost Netgear, spustila nový program, který slibuje vývojářům, expertům, ale i běžným uživatelům vyplacení finanční odměny za nalezení bezpečnostních chyby v jejich produktech. Za nalezení zranitelnosti v hardware, API nebo mobilní aplikaci nabízí odměnu od 150 do 15 tisíc dolarů (dle závažnosti).

Michal Makovec | Komentářů: 0
dnes 00:08 | Pozvánky

V sobotu 18. 2. se v Praze v prostorách VŠE uskuteční od 9:30 již 4. ročník největší české konference o open source redakčním systému WordPress (WP) - WordCamp Praha 2017.

… více »
smíťa | Komentářů: 0
včera 23:58 | Komunita

Kryptoměnová komunita zahájila nový rok spuštěním projektu Blockchain.cz, jehož cílem je kolektivně nalézt ideální překlad pro čím dál frekventovanější slovo „blockchain“. Přispět návrhem může kdokoli. Sběr bude trvat až do konce září 2017. Následně bude probíhat dvoutýdenní veřejné hlasování, které bude zakončeno výběrem toho nejlepšího návrhu.

xHire | Komentářů: 3
včera 15:55 | Bezpečnostní upozornění

Společnost Oracle vydala čtvrtletní bezpečnostní aktualizaci svých softwarových produktů (CPU, Critical Patch Update). Opraveno je celkově 270 bezpečnostních chyb. V Oracle Java SE je například opraveno 17 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 16 z nich. V Oracle MySQL je opraveno 27 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 5 z nich.

Ladislav Hagara | Komentářů: 0
včera 02:48 | Nová verze

Po půl roce od vydání verze 9.0 (zprávička) byla vydána verze 10.0 zvukového serveru PulseAudio. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 26
včera 00:33 | Komunita Ladislav Hagara | Komentářů: 8
18.1. 17:30 | Zajímavý článek

Mozilla.cz informuje, že webový prohlížeč Firefox bude od verze 53 obsahovat integrovaný prohlížeč dat ve formátu JSON. Firefox kromě strukturovaného prohlížení nabídne také možnost filtrace a uložení na disk. Dle plánu by měl Firefox 53 vyjít 18. 4. 2017.

Ladislav Hagara | Komentářů: 1
18.1. 11:00 | Komunita

Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už zítra 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.

xkucf03 | Komentářů: 1
17.1. 21:55 | Komunita

Nadace pro svobodný software (FSF) oznámila aktualizaci seznamu prioritních oblastí (changelog), na které by se měli vývojáři a příznivci svobodného softwaru zaměřit. Jsou to například svobodný operační systém pro chytré telefony, hlasová a video komunikace nebo softwarový inteligentní osobní asistent.

Ladislav Hagara | Komentářů: 20
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (10%)
 (2%)
 (74%)
 (3%)
 (11%)
Celkem 332 hlasů
 Komentářů: 24, poslední 17.1. 10:14
    Rozcestník
    Reklama

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

    9.3.2013 14:41 Standa
    řešení problému v bash
    Přečteno: 761×
    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: 46
    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: 46
    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: 46
    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: 46
    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: 46
    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: 46
    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: 46
    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: 46
    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: 46
    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: 46
    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: 46
    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.