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 11:33 | IT novinky

    Nový open source router Turris Omnia NG je v prodeji. Aktuálně na Allegro, Alternetivo, Discomp, i4wifi a WiFiShop.

    Ladislav Hagara | Komentářů: 8
    dnes 05:44 | Komunita

    Na YouTube a nově také na VHSky byly zveřejněny sestříhané videozáznamy přednášek z letošního OpenAltu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | Komunita

    Jednou za rok otevírá společnost SUSE dveře svých kanceláří široké veřejnosti. Vítáni jsou všichni, kdo se chtějí dozvědět více o naší práci, prostředí ve kterém pracujeme a o naší firemní kultuře. Letos se dveře otevřou 26. 11. 2025 v 16:00. Můžete se těšit na krátké prezentace, které vám přiblíží, na čem naši inženýři v Praze pracují, jak spolupracujeme se zákazníky, partnery i studenty, proč máme rádi open source a co pro nás skutečně

    … více »
    SUSEMAS | Komentářů: 0
    dnes 04:22 | Komunita

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za říjen (YouTube).

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

    Jeff Quast otestoval současné emulátory terminálu. Zaměřil se na podporu Unicode a výkon. Vítězným emulátorem terminálu je Ghostty.

    Ladislav Hagara | Komentářů: 6
    včera 22:55 | IT novinky

    Amazon bude poskytovat cloudové služby OpenAI. Cloudová divize Amazon Web Services (AWS) uzavřela s OpenAI víceletou smlouvu za 38 miliard USD (803,1 miliardy Kč), která poskytne majiteli chatovacího robota s umělou inteligencí (AI) ChatGPT přístup ke stovkám tisíc grafických procesů Nvidia. Ty bude moci využívat k trénování a provozování svých modelů AI. Firmy to oznámily v dnešní tiskové zprávě. Společnost OpenAI také nedávno

    … více »
    Ladislav Hagara | Komentářů: 5
    včera 16:22 | Pozvánky

    Konference Prague PostgreSQL Developer Day 2026 (P2D2) se koná 27. a 28. ledna 2026. Konference je zaměřena na témata zajímavá pro uživatele a vývojáře. Příjem přednášek a workshopů je otevřen do 14. listopadu. Vítáme témata související s PostgreSQL či s databázemi obecně, a mohou být v češtině či angličtině.

    TomasVondra | Komentářů: 0
    včera 13:22 | Nová verze

    Byl vydán Devuan 6 Excalibur. Přehled novinek v poznámkách k vydání. Kódové jméno Excalibur bylo vybráno podle planetky 9499 Excalibur. Devuan (Wikipedie) je fork Debianu bez systemd. Devuan 6 Excalibur vychází z Debianu 13 Trixie. Devuan 7 ponese kódové jméno Freia.

    Ladislav Hagara | Komentářů: 4
    včera 10:44 | IT novinky

    Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu poprvé překročil 3 %, aktuálně 3,05 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 27,18 %. Procesor AMD používá 67,10 % hráčů na Linuxu.

    Ladislav Hagara | Komentářů: 1
    včera 10:33 | Zajímavý projekt

    Joel Severin v diskusním listu LKML představil svůj projekt linuxového jádra ve WebAssembly (Wasm). Linux tak "nativně" běží ve webovém prohlížeči. Potřebné skripty pro převod jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 1
    Jaké řešení používáte k vývoji / práci?
     (36%)
     (48%)
     (18%)
     (18%)
     (22%)
     (16%)
     (21%)
     (16%)
     (17%)
    Celkem 308 hlasů
     Komentářů: 15, poslední 2.11. 08:25
    Rozcestník

    Dotaz: BASH - Problém s podmínkou

    20.7.2014 01:54 Martin
    BASH - Problém s podmínkou
    Přečteno: 341×
    Ahoj, potřebuji radu zkušených.

    Mám takovou funkční podmínku
    if [[ ! "$A" =~ "$B" ]]
    then
         echo "Error!"
    else
         echo "Success!"
    fi
    Jenže potřebuji přesně opačné zpracování, odstraním tedy vykřičník
    if [[ "$A" =~ "$B" ]]
    then
         echo "Success!"
    else
         echo "Error!"
    fi
    ale podmínka vypíše vždy Error! Poradí prosím někdo? Děkuji

    Odpovědi

    David Watzke avatar 20.7.2014 10:12 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: BASH - Problém s podmínkou
    Operátor =~ se chová různě, když dáš regex do uvozovek a když ho necháš jenom tak volně... konkrétněji: v uvozovkách to obvykle nefunguje ;-)

    Tohle je ok:
    [[ '-->' =~ ^\-\-\>$ ]]
    [[ '-->' =~ ^--\>$ ]]
    A tohle vše nefunguje jak bys mohl čekat:
    [[ '-->' =~ '^-->$' ]]
    [[ '-->' =~ '^\-\->$' ]]
    [[ '-->' =~ '^\-\-\>$' ]]
    [[ '-->' =~ '^--\>$' ]]
    Abych pravdu řekl, netuším proč a ničí mě to.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    20.7.2014 12:29 Logik
    Rozbalit Rozbalit vše Re: BASH - Problém s podmínkou
    Jo, taky jsem to zjistil a divim se, teď jsem něco zkusil a vypadá to, že u bashe uvozovky escapujou speciální znaky v regexpu.

    Proto asi todle hodí True (0)
    [[ "a" =~ a$ ]] ; echo $?
    [[ "a$" =~ "a$" ]] ; echo $?
    [[ "a$" =~ a"$" ]] ; echo $?
    

    A todle False (1)
    [[ "a$" =~ a$ ]] ; echo $?
    [[ "a$" =~ "a"$ ]] ; echo $?
    

    Jestli tomu tak je, tak je to ovšem zvěrstvo...
    21.7.2014 11:24 marek
    Rozbalit Rozbalit vše Re: BASH - Problém s podmínkou

    Nejhorsi je, ze to drive fungovalo (cca 5let), takze jsem musel prepisovat uz odladene scripty.

    ted to obchazim konstrukci:

    porovnatel="^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)$" ;if [[ "$jmeno" =~ $porovnatel && ${BASH_REMATCH[1]} -lt 256 && ${BASH_REMATCH[2]} -lt 256 && ${BASH_REMATCH[3]} -lt 256 && ${BASH_REMATCH[4]} -lt 256 ]]
    then
         echo "je to ip"
    fi
    
    20.7.2014 10:23 vertigo
    Rozbalit Rozbalit vše Re: BASH - Problém s podmínkou

    Když změním $A, $B na $1, $2 tak to funguje...

    20.7.2014 13:09 RM
    Rozbalit Rozbalit vše Re: BASH - Problém s podmínkou
    Já se raději tomuhle způsobu -- z výše uvedených důvodů -- vyhýbám a používám substituci v běžné podmínce. Třeba tak:
    if [ ! "${B/*$A*/}" ];then echo OK; else echo NOK; fi
    20.7.2014 13:24 RM
    Rozbalit Rozbalit vše Re: BASH - Problém s podmínkou
    Další způsob -- asi nejrychlejší -- je použít echo a grep za if bez závorek:

    if echo "$B" | grep -q "$A"; then ... else ... fi

    Tohle mi přijde ještě fortelnější řešení, než použití výrazu v závorkách se substitucí.
    David Watzke avatar 20.7.2014 14:23 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: BASH - Problém s podmínkou
    Nejrychlejší ti přijde vytvořit subshell a spustit binárku? Oproti built-in funkci? To snad ne.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    20.7.2014 14:52 RM
    Rozbalit Rozbalit vše Re: BASH - Problém s podmínkou
    proto jsem psal asi, nemeril jsem to, muzet to ale zkusit sam a vysledek sem napsat.
    20.7.2014 15:14 RM
    Rozbalit Rozbalit vše Re: BASH - Problém s podmínkou
    jsem to zkusil a je tomu opravdu tak -- oba predchozi zpusoby jsou podstatne rychlejsi. Vydel jsem tenhle způsob hojne ve skriptech v initrd. Toť moje domněnka, ze je to rychlejší, ale není!
    21.7.2014 11:50 RM
    Rozbalit Rozbalit vše Re: BASH - Problém s podmínkou
    -- Ještě jsem to trochu zkoušel, abych si v tom sám udělal jasno. Jako shell se v initrd používá ash, ten je tak prostinkej, že ani tu substituci nezná. Zato spouštět další subshell mu zřejmě nedělá nejmenší problém a s rychlostí je na tom uvedená podmínka stejně nebo o něco lépe než první dvě v bashi. Tolik asi k důvodu, proč se to v initrd používá, plus výhoda nezávislosti na použitém shellu.

    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.