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í
×
    včera 02:11 | Komunita

    Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.

    Ladislav Hagara | Komentářů: 14
    včera 02:00 | Nová verze

    Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    23.12. 18:33 | Nová verze

    Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.

    Ladislav Hagara | Komentářů: 0
    23.12. 13:55 | Nová verze

    Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 0
    23.12. 12:44 | Nová verze

    Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.

    Ladislav Hagara | Komentářů: 0
    22.12. 23:44 | Nová verze

    Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.

    Ladislav Hagara | Komentářů: 0
    21.12. 05:00 | Nová verze

    Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.

    Ladislav Hagara | Komentářů: 2
    21.12. 01:55 | Nová verze

    GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.

    Ladislav Hagara | Komentářů: 0
    19.12. 17:22 | IT novinky

    Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.

    Ladislav Hagara | Komentářů: 14
    19.12. 17:00 | Komunita

    Nový CEO Mozilla Corporation Anthony Enzor-DeMeo tento týden prohlásil, že by se Firefox měl vyvinout v moderní AI prohlížeč. Po bouřlivých diskusích na redditu ujistil, že v nastavení Firefoxu bude existovat volba pro zakázání všech AI funkcí.

    Ladislav Hagara | Komentářů: 1
    Kdo vám letos nadělí dárek?
     (33%)
     (2%)
     (10%)
     (2%)
     (1%)
     (2%)
     (16%)
     (19%)
     (14%)
    Celkem 83 hlasů
     Komentářů: 18, poslední včera 15:30
    Rozcestník

    Dotaz: BASH : Jak zjistit, jestli je položky již v array?

    11.12.2012 10:55 AleX
    BASH : Jak zjistit, jestli je položky již v array?
    Přečteno: 280×
    Ahoj, poradí někdo jak to zjistit? Díky

    Odpovědi

    11.12.2012 11:17 l4m4
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    for-cyklem, který projde celé pole (for x in "${a[@]}"...) a položky pěkně po jedné porovná pomocí test. A během psaní toho cyklu přemýšlet, zda je bash pro tuto úlohu vhodný nástroj...
    11.12.2012 11:30 AleX
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    Díky, V každém případě to vhodný jazyk není!

    Tak jsem to sesmolil ale nejde mi to, co je tam zle? Díky
    in_array() {
         for x in "${a[@]}"
         do
              if [ "$1" == "x" ]
              then
                   return 0
              else
                   return 1
              fi
         done
    } 
    
    if in_array "czech"
    then
          echo je
    else
          echo neni
    fi
    11.12.2012 11:48 l4m4
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    Přinejmenším chybí $ u x.
    11.12.2012 11:52 AleX
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    Tím to ale není...
    11.12.2012 11:56 AleX
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    Ještě bych to mohl napsat i takto, ale výsledek je stejný
    in_array() {
     for x in "${a[@]}"
     do
      if [ "$1" == "$x" ]
      then
       return 0
       break
      fi
     done
     return 1
    } 
    
    in_array "czech"
    if [ $? == 0 ]
    then
          echo "je"
    else
          echo "neni"
    fi
    11.12.2012 12:01 l4m4
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    Jo, a samozřejmě return je zapotřebí udělat pouze, když najdeš, jinak kontroluješ pouze první položku...
    11.12.2012 12:06 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    Tohle už funguje. Ještě někam na začátek dejte to pole, třeba
    a[0]="x"
    a[1]="czech"
    a[2]="y"
    a uvidíte, jak vám to pěkně půjde.

    Pro ladění doporučuji třeba toto:
     for x in "${a[@]}"
     do
       echo "arr: $x == $1"
    11.12.2012 12:08 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    Jo a break je nadbytečný.
    11.12.2012 12:19 AleX
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    break jsem tam dal proto, aby když najde shodu, neprocházel zbytečné zbytek pole, je to špatně?
    11.12.2012 12:40 Kit
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    Po returnu se ten break stejně už neprovede.
    11.12.2012 14:57 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    Pokud dokážeš ovlivnit, jak pole vzniká, tak stačí použít asociativní pole
    $ declare -A dict
    $ dict["foo"]="foo"
    $ if [[ ${dict["foo"]} != '' ]]; then echo "je tam"; fi
    je tam
    $ if [[ ${dict[42]} != '' ]]; then echo "je tam"; fi
    $
    
    Nejsem si teda jistý, jak je to interně implementováno, takže asociativní pole nemusí garantovat pořadí, ale v bashi člověk nikdy neví.
    When your hammer is C++, everything begins to look like a thumb.
    11.12.2012 15:39 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    Predpokladajme, ze znak | sa nevyskytuje nikde v poli.
    pole=( a b c )
    IFS='|'
    [[ "${pole[*]}" == *a* ]] &&
      echo hura
    If you hold a Unix shell up to your ear, you can you hear the C.
    11.12.2012 15:43 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: BASH : Jak zjistit, jestli je položky již v array?
    Eeeeee, oprava:
    pole=( aaa bb c )
    IFS='|'
    [[ "|${a[*]}|" == *"|bb|"* ]] &&
      echo hura
    If you hold a Unix shell up to your ear, you can you hear the C.

    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.