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 04:11 | Nová verze

    Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 22:22 | Bezpečnostní upozornění

    Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].

    Ladislav Hagara | Komentářů: 8
    včera 21:11 | Zajímavý článek

    V lednu byl otevřen editor kódů Zed od autorů editoru Atom a Tree-sitter. Tenkrát běžel pouze na macOS. Byl napevno svázán s Metalem. Situace se ale postupně mění. V aktuálním příspěvku Kdy Zed na Linuxu? na blogu Zedu vývojáři popisují aktuální stav. Blíží se alfa verze.

    Ladislav Hagara | Komentářů: 20
    včera 14:33 | Pozvánky

    O víkendu 11. a 12. května lze navštívit Maker Faire Prague, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    8.5. 21:55 | Nová verze

    Byl vydán Fedora Asahi Remix 40, tj. linuxová distribuce pro Apple Silicon vycházející z Fedora Linuxu 40.

    Ladislav Hagara | Komentářů: 19
    8.5. 20:22 | IT novinky

    Představena byla služba Raspberry Pi Connect usnadňující vzdálený grafický přístup k vašim Raspberry Pi z webového prohlížeče. Odkudkoli. Zdarma. Zatím v beta verzi. Detaily v dokumentaci.

    Ladislav Hagara | Komentářů: 6
    8.5. 12:55 | Nová verze

    Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 0
    7.5. 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 10
    7.5. 18:33 | IT novinky

    Apple představil (keynote) iPad Pro s čipem Apple M4, předělaný iPad Air ve dvou velikostech a nový Apple Pencil Pro.

    Ladislav Hagara | Komentářů: 5
    7.5. 17:11 | Nová verze

    Richard Biener oznámil vydání verze 14.1 (14.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 14. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (63%)
     (8%)
     (13%)
     (16%)
    Celkem 148 hlasů
     Komentářů: 10, poslední 8.5. 17:35
    Rozcestník

    Dotaz: Oprava příkazu

    11.2.2016 13:07 JduJenKolem
    Oprava příkazu
    Přečteno: 222×
    Ahoj, poradte mi prosim proc mi tohle nyvyhodi chybu kdyz cesta neexistuje. Dekuji
    for f in $(find "/pozadovana/cesta" -type f || exit 1);do . "$f" || exit 1; done

    Odpovědi

    Jendа avatar 11.2.2016 13:18 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Oprava příkazu
    Mně to chybu vyhodí
    ~> for f in $(find "/pozadovana/cesta" -type f || exit 1);do . "$f" || exit 1; done
    find: ‘/pozadovana/cesta’: No such file or directory
    
    11.2.2016 13:41 JduJenKolem
    Rozbalit Rozbalit vše Re: Oprava příkazu
    Hm, u me zadna chyba, muzu mit neco vypnute nebo spatne nastaveno ? Dik
    11.2.2016 13:57 JduJenKolem
    Rozbalit Rozbalit vše Re: Oprava příkazu
    Tak jsem zjistil, ze jdou chyby do nejakeho souboru 2>/logfile. Uz to funguje ale stale to nebere zretel na ten exit 1, i kdyz dir neexistuje script bezi dal, je to spatne napsane ? Dik
    11.2.2016 15:47 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Oprava příkazu

    V tom vnořeném příkazu nebude mít exit 1 žádný vliv, protože se z něj návratová hodnota nijak nepropaguje ven. Stačí se podívat na tohle:

    for i in $(nonsense); do echo "$i"; done
    

    Kupodivu to má návratovou hodnotu 0 (tedy úspěch), přestože nonsense neexistuje a nelze nic takového spustit (a normálně by shell vrátil hodnotu 127).

    Ještě odbočím: Aby člověk rovnou na promptu viděl návratovou hodnotu posledního příkazu, je víc než rozumné přidat si do ~/.bashrc nebo ~/.bash_profile (nebo klidně do /etc/profile, pro mě za mě) něco takového:

    PCOLOR_DEFAULT=$'\033[00m'
    PCOLOR_RED=$'\033[01;31m'
    PCOLOR_GREEN=$'\033[01;32m'
    PCOLOR_YELLOW=$'\033[01;33m'
    PCOLOR_BLUE=$'\033[01;34m'
    PCOLOR_SHINY=$'\033[01;37m'
    get_exit_status() {
      status="${?}"
      if [[ 0 -eq "${status}" ]]; then
        echo \
        'XCODE_COLOR="${PCOLOR_BLUE}"
        XCODE_STATUS='\'\'
      else
        echo \
        'XCODE_COLOR="${PCOLOR_RED}"
        XCODE_STATUS="['"${status}"']"'
      fi
    }
    PROMPT_COMMAND='eval $(get_exit_status)'
    PS1='\[${XCODE_COLOR}\](\[${PCOLOR_BLUE}\]\u\[${PCOLOR_YELLOW}\]@\[${PCOLOR_SHINY}\]\h\[${PCOLOR_DEFAULT}\] \[${PCOLOR_GREEN}\]\W\[${XCODE_COLOR}\])${XCODE_STATUS}\$\[${PCOLOR_DEFAULT}\] '
    
    Zpět k tématu: Nejblíž tomu, čeho jsi asi chtěl docílit, bude následující:
    (
      set -e
      tmp="$(mktemp -d)"
      trap 'rm -Rf "$tmp"' EXIT
      mkfifo "$tmp"/pipe
      find "/požadovaná/cesta" -type f > "$tmp"/pipe &
      pid="$!"
      while read f; do . "$f"; done < "$tmp"/pipe
      wait "$pid"
    )
    

    Důvod, proč používám fifo a ne přímo pipe, je inlinování těch nalezených souborů do hlavního kontextu současného shellu. Kdyby while-cyklus četl názvy souborů ze shellové pipe, všechno, co ty inlinované soubory změní a nastaví, by po skončení pipeline nikde nezůstalo.

    (Při použití pipeline se ovšem dají aspoň zjistit návratové hodnoty všech příkazů pipeline z bashového pole PIPESTATUS a vrátit třeba logický or mezi návratovými hodnotami nebo tak něco: status=0; for i in "${!PIPESTATUS[@]}"; do ((status |= PIPESTATUS[i])); done; exit "$status". Jakmile se používá `příkaz` nebo $(příkaz) jako argument for-cyklu, nic podobného není k dispozici.)

    Výše uvedený skript okamžitě skončí s chybou, když find nemůže otevřít adresář pro hledání. Skončí taky s chybou po prvním nalezeném souboru, který se nepodaří nainlinovat (neplatný symlink, nejsou oprávnění atd. atp.). To by snad mohlo být ono.

    11.2.2016 14:25 Kit | skóre: 45 | Brno
    Rozbalit Rozbalit vše Re: Oprava příkazu
    Asi bych to zjednodušil do tvaru
    for f in "/pozadovana/cesta"/*; do
        . "$f"
    done
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    11.2.2016 15:49 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Oprava příkazu

    Tazatel ale neříká, že tam nemá podadresáře. Taky neříká, že by tam nesměly být soubory s názvem začínajícím tečkou.

    11.2.2016 16:28 Kit | skóre: 45 | Brno
    Rozbalit Rozbalit vše Re: Oprava příkazu
    Jasně, zapomněl jsem se ho zeptat. Snad to tolik nevadí.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

    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.