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 21:33 | Nová verze

    Byla vydána zářijová aktualizace aneb nová verze 1.83 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.83 vyšlo také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    dnes 18:55 | Nová verze

    Oficiálně byl vydán Android 14. Detaily na blogu a stránkách věnovaných vývojářům.

    Ladislav Hagara | Komentářů: 0
    dnes 18:33 | IT novinky

    Google na akci Made by Google '23 (YouTube) představil novinky v kolekci produktů Pixel: hodinky Pixel Watch 2 a telefony Pixel 8 a Pixel 8 Pro s čipem Tensor G3, Androidem 14 a 7letou softwarovou podporu.

    Ladislav Hagara | Komentářů: 1
    dnes 14:11 | Nová verze

    Byla vydána nová verze 9.5 sady aplikací pro SSH komunikaci OpenSSH. Nově ve výchozím stavu ssh-keygen generuje Ed25519 klíče. Do ssh byla přidána možnost obfuskace časováním stisknutí kláves (keystroke timing obfuscation).

    Ladislav Hagara | Komentářů: 1
    dnes 11:44 | Komunita

    Konference OpenAlt 2023 proběhne o víkendu 11. a 12. listopadu v Brně. Přihlásit přednášky lze do neděle 8. října 23:59.

    Ladislav Hagara | Komentářů: 0
    dnes 09:00 | Bezpečnostní upozornění

    V X.Org v libX11 do 1.8.7 a libXpm do 3.5.17 bylo nalezeno a v upstreamu opraveno 5 bezpečnostních chyb (CVE-2023-43785, CVE-2023-43786, CVE-2023-43787, CVE-2023-43788 a CVE-2023-43789). Dvě nejstarší jsou s námi 35 let. Obsaženy byly již v X11R2 vydaném v únoru 1988.

    Ladislav Hagara | Komentářů: 7
    dnes 08:00 | Bezpečnostní upozornění

    Byly publikovány informace o bezpečnostní chybě Looney Tunables aneb CVE-2023-4911 v glibc ld.so. Útočník ji může využít k lokální eskalaci práv. Vyzkoušeno na výchozích instalacích linuxových distribucí Fedora 37 a 38, Ubuntu 22.04 a 23.04 a Debian 12 a 13. Chyba byla do glibc zavlečena v dubnu 2021. Detaily v txt.

    Ladislav Hagara | Komentářů: 0
    včera 20:33 | Komunita

    Na Kickstarteru byla spuštěna crowdfundingová kampaň na podporu telefonu Murena 2 s /e/OS. Telefon má 2 hardwarové přepínače. Prvním lze jednoduše vypnout kamery a mikrofony. Druhým se lze odpojit od sítí.

    Ladislav Hagara | Komentářů: 6
    včera 20:11 | Bezpečnostní upozornění

    Společnost Qualcomm publikovala říjnový bezpečnostní bulletin. V úvodu informuje, že bezpečnostní chyby CVE-2023-33106, CVE-2023-33107, CVE-2022-22071 a CVE-2023-33063 jsou cíleně využívány útočníky. O CVE-2022-22071 se píše už v loňském květnovém bulletinu. Detaily o zbylých chybách jsou k dispozici OEM partnerům. Veřejně budou k dispozici až s vydáním prosincového bulletinu.

    Ladislav Hagara | Komentářů: 0
    včera 13:55 | Nová verze

    Byla vydána nová verze 5.18 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 12.5.6. Tor na verzi 0.4.8.6.

    Ladislav Hagara | Komentářů: 0
    Raději
     (57%)
     (43%)
    Celkem 67 hlasů
     Komentářů: 3, poslední 2.10. 23:31
    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: 1116×
    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.