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 16:33 | Komunita

    Hector "marcan" Martin z Asahi Linuxu skončil jako upstream vývojář linuxového jádra. Štafetu po něm převzal Janne Grunau z Asahi Linuxu.

    Ladislav Hagara | Komentářů: 3
    8.2. 22:33 | IT novinky

    PlayStation Network (PSN) má již několik hodin, vlastně celou sobotu, masivní výpadek (Stav služby PSN, X).

    Ladislav Hagara | Komentářů: 0
    8.2. 17:22 | Komunita

    Vývojáři open source storage platformy TrueNAS oznámili, že s verzí 25.04 s kódovým názvem Fangtooth končí TrueNAS CORE postavený na FreeBSD a TrueNAS SCALE postavený na Linuxu. Jejich společným pokračováním bude TrueNAS Community Edition postavený na Linuxu.

    Ladislav Hagara | Komentářů: 6
    8.2. 15:55 | IT novinky

    Mapy Google dnes slaví 20 let. Spuštěny byly 8. února 2005. Svět se přesunul od papírových map k digitálním. A ke Street View, Live View, Immersive View, …

    Ladislav Hagara | Komentářů: 19
    8.2. 02:55 | Komunita

    Hector "marcan" Martin, vedoucí projektu Asahi Linux aneb Linux na Apple Siliconu, skončil jako upstream vývojář linuxového jádra. Se slovy "už nemám žádnou důvěru v proces vývoje jádra … další vývoj Apple/ARM bude pokračovat downstream" odstranil své jméno ze souboru MAINTAINERS. Důvodem jsou neshody kolem Rustu v linuxovém jádru [Hacker News, No rust code in kernel/dma, please.].

    Ladislav Hagara | Komentářů: 78
    7.2. 16:55 | IT novinky

    Mistral AI včera představil nový vylepšený Le Chat. Nově také jako aplikace pro iOS a Android.

    Ladislav Hagara | Komentářů: 0
    7.2. 16:22 | IT novinky

    Britské bezpečnostní orgány nařídily americké firmě Apple, aby vytvořila takzvaná "zadní vrátka", která by umožnila dostat se k šifrovanému obsahu uživatelů uloženému v cloudu. Tajné nařízení, vydané v lednu, vyžaduje plošný přístup k šifrovanému účtu jakéhokoliv uživatele přístrojů Apple kdekoliv na světě. Britské úřady tedy Apple nežádají pouze o asistenci s přístupem k účtu konkrétního uživatele, ale rovnou chtějí mít přístup ke všem účtům, kdykoliv budou chtít.

    Ladislav Hagara | Komentářů: 105
    7.2. 05:11 | Nová verze

    Byla vydána (𝕏) lednová aktualizace aneb nová verze 1.97 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.97 vyšlo také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    7.2. 04:55 | Humor

    Hra Doom může běžet (𝕏, Mastodon) i v převodníku Apple Lightning na HDMI. Ukázka na YouTube.

    Ladislav Hagara | Komentářů: 3
    6.2. 21:00 | Humor

    Nedávno se povedlo do pdf souborů vložit Tetris a DOOM a po otevření příslušného pdf souboru v na Chromiu založeném webovém prohlížeči vybranou hru přímo v pdf spustit. LinuxPDF ukazuje, že do pdf lze vložit také RISC-V emulátor a rozběhnout Linux.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    Dotaz: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné

    30.7.2012 15:03 MM
    BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    Přečteno: 1137×
    Ahoj, jak můžu napsat podmínku v bashi která zjistí jestli je pole prázdné nebo něco obsahuje. Díky
    if [ ${MYARRAY} ]
    then
     echo "Pole je plne"
    else
     echo "Pole je prázdné"
    fi

    Řešení dotazu:


    Odpovědi

    Řešení 1× (iKoulee)
    30.7.2012 15:18 l4m4
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    Například (prázdnost)
    test ${#MYARRAY[*]} = 0
    30.7.2012 16:13 MM
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    Nevím jak jsi to myslel ale tohle nefunguje
    if [ ${#MYARRAY[*]} = 0 ]
    then
     echo "Pole je prázdné"
    else
     echo "Pole je plné"
    fi
    30.7.2012 16:33 NN
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    funguje
    30.7.2012 22:10 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    To ${#MYARRAY[*]} vrací počet prvků pole.
    MYARRAY=
    echo "Počet prvků v poli: ${#MYARRAY[*]}"
    
    for((i=0;i<${#MYARRAY[*]};i++)) {
        echo "${#MYARRAY[i]}"
    }
    
    Počet prvků v poli: 1
    0
    unset MYARRAY
    echo "Počet prvků v poli: ${#MYARRAY[*]}"
    
    for((i=0;i<${#MYARRAY[*]};i++)) {
        echo "${#MYARRAY[i]}"
    }
    
    Počet prvků v poli: 0

    31.7.2012 12:49 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    test -z $A && echo nic || echo nieco
    31.7.2012 17:24 l4m4
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    A=('' Gotcha)
    1.8.2012 00:31 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    test -z ${A[*]} && echo nic || echo nieco
    1.8.2012 00:57 l4m4
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    Tak schválně, co myslíš, že to udělá při
    A=(Ignorance strikes back)
    ?
    1.8.2012 15:57 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    test -z "${A[*]}" && echo nic || echo nieco
    David Watzke avatar 1.8.2012 20:35 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    Stále kravina...
    $ A=('')
    $ echo ${#A[*]}
    1
    $ test -z "${A[*]}" && echo nic || echo nieco
    nic
    
    Vzdej to už :-)
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    6.8.2012 11:26 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    aha, a co vlastne to pole obsahuje? vypis mi jeho prvky.
    6.8.2012 12:58 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    Obsahuje jeden prázdný řetězec ''.

    Prázdný řetězec je plnohodnotný prvek pole, i když při výpisu na váš terminál se shodou okolností nevypíše žádný znak :)

    Je to jako prázdná krabice od bot. Někoho sice zajímají výhradně ty boty, protože je třeba obuvník, tak všude vidí jen boty boty boty, ale skladníka zajímají i prázdné krabice.

    Pokud mi někdo předal prázdnou krabici od bot bez tří mega (pole s prázdným řetězcem), je to zcela jiná situace, než kdyby žádná předávka vůbec neproběhla (prázdné pole).
    6.8.2012 18:03 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    miesas hrusky s jablkami. krabica je krabica, topanky su topanky. ak je krabica pole K a topanky prvok K0, tak pole nie je prazdne. ak tam ziadne topanky nie su, tak pole je prazdne, a je jedno, ci tam bude este nejaka igelitka z topanok alebo nie, pretoze v konecnom dosledku je krabica prazdna.
    David Watzke avatar 6.8.2012 18:18 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    Takže tohle je pro tebe taky prázdný pole?
    const char p[] = {0, 0};
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    6.8.2012 18:46 l4m4
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    Právo na tento názor ti nikdo nebere, ale tvůrci bashe to zjevně vidí jinak -- jak zde bylo již několikrát demonostrováno.
    6.8.2012 19:47 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    ak je krabica pole K

    Krabice není pole K. špatný předpoklad => špatný závěr. Kraice je plnohodnotný prvek pole, ať je prázdná nebo plná.
    7.8.2012 07:39 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    Ale nelze popřít existenci krabice…
    Kolik prvků má tedy pole v mém příkladu níže?
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    6.8.2012 13:28 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    Třeba takto:
    #!/bin/bash
    A=('' '6*9' '' '42')
    #A=('')
    echo "Pole A obsahuje: ${#A[@]} položek"
    for (( i=0 ; i < ${#A[@]} ; i++ ))
    do
      echo "Prvek $i má hodnotu: '${A[$i]}'"
    done
    
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    1.8.2012 00:59 Jooky (inactive) | skóre: 39 | blog: Jooky | Bratislava
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    V linuxe je v sekcii 1 manualova stranka "test" (man 1 test)

    Cast zaujimava pre tento problem:
           -n STRING
                  the length of STRING is nonzero
    
           STRING equivalent to -n STRING
    
           -z STRING
                  the length of STRING is zero
    
    Cize moznost je if [ -n "${MYARRAY}" ], alebo if [ -z "${MYARRAY}" ] a potom spravne then/else.
    Kedze je uz pokrocili cas, tak som to pre istotu aj odskusal :)
    $ MYARRAY=a
    $ if [ -n "${MYARRAY}" ]; then  echo "Pole je plne"; else  echo "Pole je prázdné"; fi
    Pole je plne
    $ MYARRAY=
    $ if [ -n "${MYARRAY}" ]; then  echo "Pole je plne"; else  echo "Pole je prázdné"; fi
    Pole je prázdné
    $
    
    Pre zjednodusenie sa to da -n uplne vypustit, ale potom by menej znalym uz nemuselo byt jasne o co ide :)
    $ MYARRAY=a
    $ if [ "${MYARRAY}" ]; then  echo "Pole je plne"; else  echo "Pole je prázdné"; fi
    Pole je plne
    $ MYARRAY=
    $ if [ "${MYARRAY}" ]; then  echo "Pole je plne"; else  echo "Pole je prázdné"; fi
    Pole je prázdné
    $
    
    a mala drobnost na zaver. Tie uvodzovky tam maju svoje miesto ... kedze:
    $ MYARRAY="a b"
    $ if [ -n ${MYARRAY} ]; then  echo "Pole je plne"; else  echo "Pole je prázdné"; fi
    -bash: [: a: binary operator expected
    Pole je prázdné
    $ if [ -n "${MYARRAY}" ]; then  echo "Pole je plne"; else  echo "Pole je prázdné"; fi
    Pole je plne
    $
    
    Bez uvodzvoviek shell cely string najprv rozdeli podla $IFS a na zaklade toho dosadi ako argumenty. Inak povedane v provom priklade vidi test "-n a b" a to nie je co ocakava ...
    1.8.2012 01:23 l4m4
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    To je, s prominutím, totální hovadina.

    Ukázky neobsahují jediné [víceprvkové] pole.

    Pro pole a expanduje ${a} na obsah prvního prvku. Takže uvedné testy nefungují ani pro výše uvedený příkad http://www.abclinuxu.cz/poradna/linux/show/363461#7 a viz také příspěvek od Ashe http://www.abclinuxu.cz/poradna/linux/show/363461#5

    Obecně stringovými testy prostě neodlišíš nenastavené prvky od prázdných:
    a=('')
    vytvoří pole o jednom prázdném prvku, což není totéž jako prázdné pole, které vytvoří například
    unset a
    declare -a a
    1.8.2012 16:00 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    $ A=(" ")
    $ test -z "${A[*]}" && echo nic || echo nieco
    nieco
    $ A=(' ')
    $ test -z "${A[*]}" && echo nic || echo nieco
    nieco
    $ A=('')
    $ test -z "${A[*]}" && echo nic || echo nieco
    nic
    $ A=("")
    $ test -z "${A[*]}" && echo nic || echo nieco
    nic
    
    1.8.2012 16:21 l4m4
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    Ano, tak to je. Stringové testy neodpovídají na otázku po prázdnosti pole. Ale nerozumím, proč to sem znovu vkládáš. Stejně jako nerozumím, proč pole vytváříš
    a=(' ')
    i
    a=(" ")
    když rozdíl je pouze v zápisu, obsah proměnné bude identický.
    7.8.2012 14:42 Jooky (inactive) | skóre: 39 | blog: Jooky | Bratislava
    Rozbalit Rozbalit vše Re: BASH - Podmínka pro kontrolu jestli je pole prázdné/plné
    Pravda, nemal som pridavat koment tak neskoro vecer :) Ja som trosku ovplyvneni aj programovanim v C. Tam je kazdy retazec v podstate pole znakov. V sheli si ani nepamatam kedy som naposledy pouzil pole znakov ... ten moj koment mozte ignorovat, lebo je to pre iny pripad ... a ja nabuduce nebudem nic pridavat neskoro v noci :)

    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.