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 03:55 | Nová verze

    Immich byl vydán v nové verzi 3.0.0. Jedná se o alternativu k výchozím aplikacím od Googlu a Applu pro správu fotografií a videí umožňující vlastní hosting serveru Immich. K vyzkoušení je demo. Immich je součástí balíčků open source aplikací FUTO. Zdrojové kódy jsou k dispozici na GitHubu pod licencí AGPL-3.0.

    Ladislav Hagara | Komentářů: 0
    dnes 02:55 | IT novinky

    Společnost Juno Computers prodávající počítače s předinstalovaným Linuxem má nově v nabídce linuxový tablet Juno Tab 4 - WiFi. Na výběr je Debian, Ubuntu a Kubuntu. Předobjednat jej lze za 949 liber (26 500 korun).

    Ladislav Hagara | Komentářů: 0
    dnes 01:22 | Nová verze

    Podman (Pod Manager), nástroj umožňující vytvářet a provozovat kontejnery, aniž by uživatel potřeboval práva roota, byl vydán v nové major verzi 6.0.0. Přehled novinek v poznámkách k vydání. Řešena je i vážná bezpečnostní chyba CVE-2026-57231.

    Ladislav Hagara | Komentářů: 0
    dnes 00:11 | IT novinky

    Společnost Sony oznámila, že od ledna 2028 přestane vydávat nové hry pro PlayStation na fyzických discích. Všechny budoucí tituly budou dostupné výhradně v digitální podobě na PlayStation Store.

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

    Google Chrome 150 byl prohlášen za stabilní. Nejnovější stabilní verze 150.0.7871.46 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Opraveno bylo 433 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

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

    Soudní dvůr Evropské unie potvrdil rekordní pokutu 4,125 miliardy eur (100 miliard Kč) americké technologické firmě Google ze skupiny Alphabet. Pokutu firmě v roce 2018 vyměřila Evropská komise (EK) za to, že Google podle ní zneužívá operačního systému Android k potlačení konkurence na trhu vyhledávacích služeb.

    Ladislav Hagara | Komentářů: 17
    včera 12:44 | IT novinky

    Administrativa amerického prezidenta Donalda Trumpa povolila firmě Anthropic obnovit plný přístup klientů k modelům umělé inteligence (AI) Fable 5 a Mythos 5. Ty byly nedostupné bezmála tři týdny kvůli bezpečnostním obavám vlády, třebaže americké ministerstvo obchodu minulý pátek povolilo omezený přístup k modelu Mythos 5 pro některé „důvěryhodné“ domácí organizace.

    Ladislav Hagara | Komentářů: 1
    včera 12:22 | Zajímavý článek

    Francúzska organizácia na ochranu spotrebiteľa, po viac než ôsmych rokoch skúmania, žaluje Epson za plánované zastarávanie tlačiarní. Súd sa začína dnes, 2. 7. 2026, vo francúzskom Nanterre.

    Vlado99 | Komentářů: 5
    včera 03:00 | Zajímavý software

    Erin Catto, autor open source 2D fyzikálního enginu Box2D (Wikipedie), představil nový 3D fyzikální engine Box3D. Engine je již používán ve hře The Legend of California.

    Ladislav Hagara | Komentářů: 0
    včera 01:00 | Nová verze

    Byla vydána nová verze 4.0.0 multiplatformního svobodného frameworku pro zpracování obrazu G'MIC (GREYC's Magic for Image Computing, Wikipedie). Přehled novinek i s náhledy nových filtrů na PIXLS.US.

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (3%)
     (16%)
     (26%)
    Celkem 2038 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: BASH for vs while

    17.6.2010 11:56 ext3fs
    BASH for vs while
    Přečteno: 1158×
    ahoj,

    vysvetli mi nekdo nasledujici rozdil?
    >> cat soubor
    abc ABD
    def DEF
    
    for STR in `cat soubor`;
    do
        echo $STR
    fone
    
    while read STR;
    do
        echo $STR
    done < soubor
    
    vystup pri pouziti for:
    abc
    ABC
    def
    DEF
    
    vystup pri pouziti while:
    abc ABC
    def DEF
    
    Jak docilit tehoz co u while pri pouziti for?

    Řešení dotazu:


    Odpovědi

    17.6.2010 11:59 Jirka P
    Rozbalit Rozbalit vše Re: BASH for vs while
    Nastav IFS na samotny konec radku.

    Viz promenne shellu
    17.6.2010 13:06 Ant
    Rozbalit Rozbalit vše Re: BASH for vs while
    To asi nepomuze:

    If the value of IFS is a <space>, <tab>, and <newline>, or if it is unset, any sequence of <space>s, <tab>s, or <newline>s at the beginning or end of the input shall be ignored and any sequence of those characters within the input shall delimit a field.

    On chce, aby se mu ten FOR choval jako WHILE, tedy aby 'space' nechapal jako separator, ale 'lf' ('newline') chapal.
    17.6.2010 13:50 Zdenek
    Rozbalit Rozbalit vše Re: BASH for vs while
    No, ale vzdyt presne to pomoci IFS zaridi.
    17.6.2010 17:25 Ant
    Rozbalit Rozbalit vše Re: BASH for vs while
    Huh?

    Podle toho popisu i kdyz nastavi IFS na newline, tak se mu to porad bude zastavovat na mezere.

    for STR in `cat soubor` se zmeni na for STR in abc ABC\ndef DEF a i pri IFS=\n se mezera bude stale povazovat za delitko a stale se mu to bude rozpadat na ctyri polozky misto na dve, jak pozaduje.
    17.6.2010 18:17 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: BASH for vs while
    A to je tak těžké si to vyzkoušet? Zastavuje se to na tom, na co to nastavíte kolego.

    To co cituješ je asi nevhodně zvoleno a vytrženo z kontextu.
    IFS    The Internal Field Separator that is used for word
    splitting after expansion and to split lines into words with
    the read builtin command.  The default value is
    ``<space><tab><newline>''.
    
    17.6.2010 18:25 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: BASH for vs while
    Pro snažší porozumění psaného textu si dovolím nápovědu: If the value of IFS is a <space>, <tab>, and <newline>,

    == Když IFS=" \t\n"

    or if it is unset,

    == nebo IFS=""

    any sequence of <space>s, <tab>s, or <newline>s at the beginning or end of the input shall be ignored and any sequence of those characters within the input shall delimit a field.

    A teď k tomu co má udělat tazatel:

    The shell treats each character of IFS as a delimiter, and splits the results of the other expansions into words on these characters. == IFS="\n"

    17.6.2010 18:30 Jirka P
    Rozbalit Rozbalit vše Re: BASH for vs while
    Pozor! IFS="" rozhodně neznamená "unset", nýbrž "null string", tedy žádná expanze.
    17.6.2010 13:09 Ant
    Rozbalit Rozbalit vše Re: BASH for vs while
    Jak docilit tehoz co u while pri pouziti for?
    To vubec tim FORem neres. Proste pouzij WHILE. Ten ti sam prestane cist, az dorazi na konec souboru.
    29.6.2010 14:18 nerakhon
    Rozbalit Rozbalit vše Re: BASH for vs while
    On tam je jeste dalsi rozdil, for a while se lisi tim, ze while vytvori novou instanci bashe. Takze napriklad : kdyby se mel obsah souboru nacitat do promenne uz by vznikl problem jak ji dal pouzit...
    29.6.2010 16:25 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: BASH for vs while
    Ale vždyť to tak není, to si asi pletete s pajpou.
    29.6.2010 16:46 marek
    Rozbalit Rozbalit vše Re: BASH for vs while
    Dobry den
    marek$ echo blabla |while read i; do  y=$i; echo $y; done; echo $y
    blabla
    
    marek$
    marek$ for i in $(echo blabla); do  y=$i; echo $y; done; echo $y
    blabla
    blabla
    marek$
    

    Obavam se ze ma pravdu.

    Jinak ten for je samozrejme nebezpecny v tom, ze snadno muzeme pretect max. delku radky.

    Marek
    29.6.2010 17:00 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: BASH for vs while
    Co to má být? Useless use of echo?

    Podívejte se ještě jednou na zadání, vidíte tam nějakou pajpu? Já tam žádnou nevidím. Není tam.

    Jak jsem řekl, plete si to s pajpou. Pokud je něco (while, for, read...) za pajpou, bash dělá nový process. Ale je to kvůli té pajpě, ne kvůli while nebo for.

    Řada případů s pajpou se dá také přepsat na případ bez pajpy, ale to jen doplňuji.
    30.6.2010 12:09 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: BASH for vs while
    To `cat subor` tiez vytvori novy proces, takze rychlostne si nepomozes. Prenos premennych do nadshellu je nieco ine.

    V bashi sa da nacitat subor cez $(<subor) bez noveho procesu.
    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.