abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 13:44 | IT novinky

    Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.

    Ladislav Hagara | Komentářů: 0
    dnes 04:44 | Nová verze

    Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.

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

    Byla vydána nová verze 6.2 ž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 13.0.14.

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

    Byla vydána nová verze 30.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí JavaScriptu, HTML a CSS Electron (Wikipedie, GitHub). Chromium bylo aktualizováno na verzi 124.0.6367.49, V8 na verzi 12.4 a Node.js na verzi 20.11.1. Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.

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

    Byla vydána nová verze 9.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 220 vývojářů. Provedeno bylo více než 2 700 commitů. Přehled úprav a nových vlastností v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    včera 23:22 | IT novinky

    Evropský parlament dnes přijal směrnici týkající se tzv. práva spotřebitele na opravu. Poslanci ji podpořili 584 hlasy (3 bylo proti a 14 se zdrželo hlasování). Směrnice ujasňuje povinnosti výrobců opravovat zboží a motivovat spotřebitele k tomu, aby si výrobky nechávali opravit a prodloužili tak jejich životnost.

    Ladislav Hagara | Komentářů: 4
    včera 16:11 | Nová verze

    Bylo oznámeno (cs) vydání Fedora Linuxu 40. Přehled novinek ve Fedora Workstation 40 a Fedora KDE 40 na stránkách Fedora Magazinu. Současně byl oznámen notebook Slimbook Fedora 2.

    Ladislav Hagara | Komentářů: 20
    včera 13:44 | Upozornění

    ČTK (Česká tisková kancelář) upozorňuje (X), že na jejím zpravodajském webu České noviny byly dnes dopoledne neznámým útočníkem umístěny dva smyšlené texty, které nepocházejí z její produkce. Jde o text s titulkem „BIS zabránila pokusu o atentát na nově zvoleného slovenského prezidenta Petra Pelligriniho“ a o údajné mimořádné prohlášení ministra Lipavského k témuž. Tyto dezinformace byly útočníky zveřejněny i s příslušnými notifikacemi v mobilní aplikaci Českých novin. ČTK ve svém zpravodajském servisu žádnou informaci v tomto znění nevydala.

    Ladislav Hagara | Komentářů: 28
    včera 13:33 | Komunita

    Byla založena nadace Open Home Foundation zastřešující více než 240 projektů, standardů, ovladačů a knihoven (Home Assistant, ESPHome, Zigpy, Piper, Improv Wi-Fi, Wyoming, …) pro otevřenou chytrou domácnost s důrazem na soukromí, možnost výběru a udržitelnost.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (72%)
     (9%)
     (2%)
     (17%)
    Celkem 718 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: Dvě stejné funkce, dva odlišné výsledky

    19.3.2013 19:19 Orlando
    Dvě stejné funkce, dva odlišné výsledky
    Přečteno: 375×
    Ahoj, poradí někdo proč to tak děla? Proč nejsou oba výsledky 210?
    fce1(){
    echo $(tput cols)
    }
    fce1 2>> $(dirname $0)/error.log
    
    Výsledek je 80
    fce2(){
    echo $(tput cols)
    }
    fce2
    Výsledek je 210

    Díky

    Odpovědi

    19.3.2013 19:34 Jardík
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    Možná kvůli tomu přesměrování stdout, asi to nastaví 80 a ignoruje otevřený terminál.
    19.3.2013 19:55 Orlando
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    A jak to tedy můžu jinak zjistit?
    19.3.2013 20:16 Marble | skóre: 27 | blog: marble
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky

    tput cols vypisuje počet sloupců terminálu, který má na descriptoru 2 (stderr). Pokud to není terminál, vypíše zjevně defaultní osmdesátku. Toť vše. Kam si nasměruješ stderr, to dostaneš.

    jak to tedy můžu zjistit – záleží na tom, co je ono "to", resp. o co se vůbec snažíš. (Proč přesměrováváš stderr, proč voláš funkci, proč tam máš echo atd. Nic z toho není z tvé otázky vůbec jasné.)

    19.3.2013 20:38 Marble | skóre: 27 | blog: marble
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    Pardon, oprava ... tput "najde" terminál pokud na něj míří alespoň jeden ze stderr a stdin. V tvém případě přesměrováváš stdout přes $() a následně i stderr při volání funkce.
    19.3.2013 20:47 Orlando
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    Snažím se o to, že bych potřeboval zjistit, jestli se změnila velikost terminálu po je spuštění, čili chtěl jsem spočítat šířku po spuštění a pak spočítat šířku v každém cyklu a podmínkou to zjistit.
    19.3.2013 21:24 Marble | skóre: 27 | blog: marble
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    Reagovat na změnu velikosti (šířky) terminálu bude pravděpodobně jednodušší přímo pomocí k tomu určenému signálu SIGWINCH (k jeho zachycení v shelu viz příkaz 'trap').

    Konkrétní šířku by (přinejmenším v bashi) mělo jít přečíst také přímo z proměnné $COLUMNS.

    Každopádně pořád nevidím důvod, proč má mít tput přesměrovaný stdout i stderr. Když chceš stdout uložit do proměnné, můžeš pořád namířit stderr na terminál, přinejmenším konstrukcí ve stylu fce() { exec 3>&1; C=$(tput cols 2>&3); ... }
    19.3.2013 19:39 luky
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    Protoze se to vykonava v subshellu a ten si updatuje nastaveni podle podle toho, kam ma pripojeny stdout a stderr.
    19.3.2013 19:52 Orlando
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    Ten druhý případ je ale taky v subshellu...
    19.3.2013 21:57 luky
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    Protoze se to vykonava v subshellu a ten si updatuje nastaveni podle podle toho, kam ma pripojeny stdout a stderr.
    19.3.2013 22:11 Orlando
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    Tak něco takového potřebuji udělat
    # !/bin/bash
    fce_foo()
    {
      START_WIDTH=$(tput cols)
    
      while true
      do
        .. jiny kod ..
    
        ACTIVE_WIDTH=$(tput cols)
        
        if [ "$ACTIVE_WIDTH" != "$START_WIDTH" ]
        then
          echo "ŠÍŘKA NENÍ STEJNÁ..."
        else
          echo "ŠÍŘKA JE STEJNÁ..."
        fi
    
        .. jiny kod ..
        
        sleep 5
      done
    }
    fce_foo 2>>/tmp/error.log
    19.3.2013 23:18 potato
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    #!/bin/bash
    setcolumns() { columns=$(tput cols); }
    trap setcolumns SIGWINCH
    
    fce_foo()
    {
      START_WIDTH=$columns
      while true
      do
        echo $COLUMNS $columns $START_WIDTH
        if [ "$columns" != "$START_WIDTH" ]
        then
          echo "ŠÍŘKA NENÍ STEJNÁ..."
        else
          echo "ŠÍŘKA JE STEJNÁ..."
        fi
        sleep 1
      done
    }
    columns=$(tput cols)
    fce_foo 2>>/tmp/error.log
    
    Pomíjím teď logiku skriptu, která nejspíš bude chtít šířku, se kterou se porovnává, po změně aktualizovat...
    20.3.2013 01:37 Orlando
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    Nějak jsem nepochopil pointu toho scriptu, napsal jsi kód který se chová zcela stejně jako ten můj problém. Šířka bude vždy taková jaká byla při spuštění programu a po změně terminálu bude vždy 80, bez ohledu na velikost...
    20.3.2013 08:48 potato
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    Jo, takhle to nefunguje.
    20.3.2013 10:56 Marble | skóre: 27 | blog: marble
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    Úplně stejně se nechová, reaguje na změnu šířky voláním funkce v 'trap'. Problém je v tom, že obsluha signálu se provádí po skončení právě probíhajícího externího příkazu a v prostředí, které je po skončení tohoto příkazu nastavené. V tomhle případě tedy v prostředí uvnitř funkce s přesměrovaným stderr.

    S přesměrováním stderr, jak jsem psal výše, by to mělo být OK.

    Jiná věc je že $COLUMNS v neinteraktivním shellu zdá se nefunguje, takže to asi není nejlepší cesta, pardon.
    19.3.2013 23:26 luky
    Rozbalit Rozbalit vše Re: Dvě stejné funkce, dva odlišné výsledky
    Pred zavolanim tput si zduplikujte stdout na stderr a pak zpatky, jak se to dela si prectete v help exec. Duvod mate kousek vyse.

    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.