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:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 0
    včera 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 8
    včera 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 1
    včera 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

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

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    24.4. 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 12
    24.4. 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
    KDE Plasma 6
     (73%)
     (9%)
     (2%)
     (16%)
    Celkem 771 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Zas dva dny v měsíci kdy zlobí BASH skripty

    8.5.2014 16:06 | Přečteno: 2068× | Linux | Výběrový blog

    Zas jsou ty blbé dva dny, co (mě) zlobí BASH skripty, které podle dne v měsíci dělají něco jiného.

    Je to spíše takový vtip, nicméně jsem zjistil, že jsem opět udělal základní chybu (naštěstí si dávám pozor abych vše logoval a notifikoval.).

    Ta hloupá chyba, je dána interpretací hodnot uvozených nulou. Pokud skript má dělat různé věci dle dne v měsíci, tak je asi nejsnadnější si zjistit den v měsíci a pak třeba IF-ovat.

    Jenže pokud autor nemyslí a udělá:

    today="$(/bin/date '+%d')"
    if [[ "${today}" -eq 1 ]]; then
      echo "Do action on the 1st of month..."
    fi
    

    A hle ono to normálně funguje krom 8. a 9. dne měsíce. Zkuste si dnes 8.5. a ještě zítra… :)

    No a je to prosté, protože 01-07 je v osmičkové soustavě OK (bo BASH nulou uvozené čísla bere jako oktalová) a od 10-31 je to už zas desítkově (bo tam není ta nula).

    Stačí jen trochu myslet a udělat
    today="$(/bin/date '+%-d')"
    nebo může být případně i (mezera nevadí):
    today="$(/bin/date '+%_d')" #kdo to nevidí je tam podtržítko.
    nebo explicitně převádět v dané soustavě:
    today="$((10#$(/bin/date '+%d')))"
    nebo
    if [[ "10#${today}" -eq 1 ]]; then …
    no a když už takto, tak asi nejlépe to dělat vše:
    today="$(/bin/date '+%-d')"
    if [[ "10#${today}" -eq 8 || "10#${today}" -eq 9 ]]; then
      echo "Do action on the 8th or 9th of month..."
    fi
    

    … a je pokoj a čisto…
    (Ještě tam může být ošetření návratového kódu příkazu date, ale nechtěl jsem to v ukázce natahovat…)

    Takže jsem vám chtěl říct: „Kdybyste plánovali něco podobného, tak aby jste si na to dali pozor…“ :-)

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    8.5.2014 16:23 prqek | blog: prqek
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    To je zas nějaká bashová finesa? Já bych napsal:

    if [ "${today}" = "1" ]

    a je to bez problémů. Kdysi do nás ve škole hustili, ať se skripty píšem čiště ve styly SysV. Ne, že bych to nějak striktně dodržoval (kolikrát ani nevím, co do toho ještě spadá a co už ne), ale koukám, že se to hodí, i když člověk nemusí předpokládat, že ten skrip poběží někde jinde než na Linuxu.
    8.5.2014 16:32 ewew | skóre: 40 | blog: ewewov_blog
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty

    Možno lepšie by bolo to dať rovno do if.

    Root v linuxe : "Root povedal, linux vykona."
    8.5.2014 17:39 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    OT: O tom bych mohl psát podobně taky :), když něco jede déle a spustíš to před půlnocí a skončí to po půlnoci a potřebuje to vědět na začátku a na konci scriptu…
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    8.5.2014 17:18 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty

    Ovšem jen za předpokladu, že uděláš s date to co jsem uvedl jako první, jinak tvoje if true nenastane nikdy.

    Bash má vlastní test a má rozdíly při použití [ ] vs. [[ ]] vs. (( )) - v tom je trochu rozdíl (, ale nic co by se toho týkalo).
    A má operátory == (nebo kompatibilní =) pro porovnání textové, co jsi použil a i -eq (a další) pro porovnání numerické stejně jako test, takže teď nevím ‚co‘ je ta finesa abych mohl říct ano či ne :-).

    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    8.5.2014 18:35 prqek | blog: prqek
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Tou finesou jsem myslel právě [[ a předvším ono numerické porovnání. Ten můj kód je špatně, napsal jsem to bez rozmyslu. Pointou mělo být, že bych to porovnával textově. Když bych opravdu potřeboval numerické porovnání (např. <,>) asi bych použil expr, právě v duchu toho, co mě učili ve škole. Může to vypadat jako stará škola, ale je mnoho současných *nixů, kde bash a gnu není. Na druhou stranu nemusí být všechno multiplatformní, jen mě zaujalo, že se ta stará škola semtam hodí i na GNU/Linuxu :-)
    8.5.2014 19:06 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    V praci pisem nejake skripty aj na AIXe, kde je default shellom ksh. A bol som prekvapeny, kolko veci (podla nazoru hodne ludi z ABCL cistych bashovin) hladko funguje aj v ksh - [[ so svojimi rozsireniami, polia atd. Najprv som sa snazil pisat odschool sh-like stylom, ale tie moderne veci znacne ulahcuju zivot.
    If you hold a Unix shell up to your ear, you can you hear the C.
    8.5.2014 19:38 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty

    Mezi:

    if [ "${today}" = "1" ]
    a
    if [[ "${today}" == "1" ]]
    není zde rozdílu.

    Jestli textově nebo numericky, to je těžké, na to je různý pohled, já většinou porovnám textově a paradoxem je právě, že jsem, zcela jistě, dal porovnání numerické aby 01 a 1 bylo totéž…
    Jinak ksh taky [[

    < > má BASH jako textové operátory (stejně jako dash, ksh), v csh už by to šlo numericky

    S expr je to nepřehledné (věc názoru), pokud se píše script pro bash či jiný shel, jedu to v něm s možnostmi, co má…

    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    8.5.2014 19:57 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Beru zpět to s tím [ a [[ - ba naopak je to právě rozdíl - sorry.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    8.5.2014 16:33 ewew | skóre: 40 | blog: ewewov_blog
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty

    Podľa manu programu date je možne použiť aj výraz %e a výsledok je podobný.

    Root v linuxe : "Root povedal, linux vykona."
    8.5.2014 17:05 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    %e ≡ %_d
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    8.5.2014 17:56 Tomáš
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Něco podobného se mi stalo se skripty na release programu. Chtělj sem to mít pěkně zarovnané, tak jsem zleva zarovnával nulami, a pak přišlo číslo 08 (tuším jenom minor verze, ale i tak to padlo na hubu).
    Bystroushaak avatar 8.5.2014 19:42 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Já bych to napsal v pythonu za použití sh modulu. S bashem a jeho obskurní syntaxí mi došla trpělivost už dávno.
    14.5.2014 10:33 n
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    hmm, to vypadá zajímavě
    8.5.2014 19:50 Stevko
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Vyzerá, že použitie [ ] miesto [[ ]], funguje. Osobne používam konštrukciu "if test"
    8.5.2014 20:10 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Jo, je to tak [ je de-facto test…
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    8.5.2014 19:53 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Použiji stejnou rétoriku :):

    S jazykem kde, odsazování vytváří scope a furt chybí nějaký modul jsem trpělivost ani nikdy nezískal.

    Ale jinak jestli bych měl scriptovat přes to co jsi odkázal, tak s tím seknu, to už nevidím pak důvod to nenapsat v nějakém normálním jazyku jako C/C++ a kdybych musel - nebo bych to dal raději v php.

    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    8.5.2014 20:21 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Jsem přesvědčený že jsem odpovídal na Bystroushaak .. s pythonem, ale asi mi to nevyšlo.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Bystroushaak avatar 9.5.2014 00:28 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    S jazykem kde, odsazování vytváří scope a furt chybí nějaký modul jsem trpělivost ani nikdy nezískal.
    No, pointa nebyla v použití pythonu, ale v nepoužití bashe. Perl by taky šel.

    Jinak co se týče těch modulů, od toho je tady pip, přes který ten sh nainstaluješ stylem pip install sh.
    Ale jinak jestli bych měl scriptovat přes to co jsi odkázal, tak s tím seknu, to už nevidím pak důvod to nenapsat v nějakém normálním jazyku jako C/C++ a kdybych musel - nebo bych to dal raději v php.
    Zkoušel jsi někdy psát program, který pracuje se systémem v něčem, co jsi popsal? Většinou to má podporu tak asi jakože system(), s trochou štěstí se občas najde popen() a kód pak vypadá stylem proveď system(), zkontroluj návratový kód, přečti co to ti to vrátilo a doufej, že se to na pozadí nějak divně nerozpadlo. Je to asi tak intuitivní a přehledné jako se drbat za uchem živou chobotnicí.

    Ten modul co jsem linkoval je poměrně vysokoúrovňový a na pozadí dělá různé triky, kterými se prakticky vyrovná bashi perlu. Například udělat rouru, spustit něco na pozadí, nebo přesměrování stdin/err/out je tam docela triviální. Používám to teď v práci na scriptování kolem proftpd a nemůžu si to vynachválit.

    Zrovna to co jsi posílal by vypadalo takhle:
    #! /usr/bin/env python
    import sh
    
    today = sh.date("+%d")
    if int(today) == 1:
        print "Do action on the 1st of month..."
    Když teda pominu, že pro práci s datumem a časem má python vlastní moduly, které jsou přítomné by default a na všech platformách.
    9.5.2014 10:08 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty

    Jsem si jistý, že ti to vyhovuje, ale jsem si jistý že mě ne a pokud nebudu muset budu jistě psát scripty v BASH nebo DASH či KSH atd…, v tom se vyzná každý…

    Ale nedá mi to, bo na příkladu rozdíly moc nevidím, jen snad c-éčko je trochu delší:
    #! /usr/bin/env python
    import sh
     
    today = sh.date("+%d")
    if int(today) == 1:
        print "Do action on the 1st of month..."
    
    #!/bin/bash
    
    today="$(/bin/date '+%-d')" 
    if [[ "${today}" -eq 1 ]]; then # "10#${today}"
      echo "Do action on the 1st of month..."
    fi
    
    <?php /*podle toho jak se to bude spouštět*/
    
    $today = (int)date('j');
    if ($today == 1){
      echo "Do action on the 1st of month...";
    }
    
    #include <stdio.h>
    #include <time.h>
    
    int main(void) {
      time_t t = time(NULL);
      struct tm tm = *localtime(&t);
      if(tm.tm_mday == 1){
        printf("%s", "Do action on the 1st of month...");
      }
    }
    
    O možnostech a nemožnostech jednotlivých jazyků je to dost široký debata, bo způsob práce se liší a není třeba se prakticky vyrovnávat bashi/perlu, když máš BASH a PERL ;-)
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Bystroushaak avatar 9.5.2014 14:20 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    O možnostech a nemožnostech jednotlivých jazyků je to dost široký debata, bo způsob práce se liší
    Ehm. To co jsi napsal v PHP a C není ekvivalent, neboť tam dochází k volání interních knihoven. Ta moje ukázka volá program /bin/date úplně stejně, jako ten bash kód. Pointa samozřejmě není takhle získávat datum, ale automatizovat ostatní procesy, keteré vyžadují interakci s programy, jenž nabízí shell. Způsob práce se tedy neliší od bashe.
    a není třeba se prakticky vyrovnávat bashi/perlu, když máš BASH a PERL ;-)
    No, to je na delší diskuzi. Pak se ti stává, že to dva dny v měsíci nefunguje ;)

    Já jsem docela rád, že python získal díky tomu modulu úplně jiný level použitelnosti pro věci, které bych dřív psal v bashi.
    9.5.2014 22:29 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty

    Není to ekvivalent, protože provolání date přes sytém nedokážu napsat, to mi paprče prostě nedají, ale bylo by samozřejmě to samé a v C by se to zkrátilo, protože by to bylo jen jedno volání.

    To se ti stane v čemkoliv, když nerespektuješ definovaná pravidla (proto strašně nerad python, protože mám velké problémy je dodržovat a pak se divím a to mnohem častěji). Třeba v PHP, když si myslíš že AND a && je to samé nebo v csh, když si myslíš, že se s < porovná řetězce, nebo v C když si myslíš, že indexi pole jsou jako v Pascalu.

    On ten způsob konverze řetězce v BASH není zas tak výjimečný, ono se to tak prostě někdy/někde dělá i ten python jenže explicitně, zápis int(today,0) způsobí stejný problém.

    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Bystroushaak avatar 9.5.2014 23:48 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Není to ekvivalent, protože provolání date přes sytém nedokážu napsat, to mi paprče prostě nedají, ale bylo by samozřejmě to samé
    Co jsou to paprče?
    a v C by se to zkrátilo, protože by to bylo jen jedno volání.
    No, to by ses mohl ještě divit, co všechno tam musíš řešit. Ono nestačí jen zavolat system(), protože ten pouze příkaz vykoná a vrátí status kód, nikoliv stdout a stderr.
    To se ti stane v čemkoliv, když nerespektuješ definovaná pravidla
    Jenže ty pravidla jsou v bashi, jak to jen říct .. skrytější a nemilosrdnější. Prostě to není programovací jazyk a většina těch roztomilých vymožeností, které považujeme za normální tam chybí, nebo funguje lehce (a často skrytě) jinak.
    (proto strašně nerad python, protože mám velké problémy je dodržovat a pak se divím a to mnohem častěji).

    Já ti nechci nutit python (což tak možná už vypadá :D), ale:

    V pythonu jsou ta pravidla maximálně triviální a konzistentní skrz celý jazyk. Celá syntaxe je tak triviální, že se vejde na pár desítek řádek BNF popisu a co je podstatné, tak je konzistentní. To bych si o bashi tvrdit netroufl, když v něm jednou za čas dělám třeba něco se smyčkama, tak mám pocit že ten kdo to navrhoval ujížděl na LSD a ještě to solil náhodným generátorem.
    10.5.2014 11:58 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty

    Rozšiř si slovní zásobu :-) −> Paprče.

    S C - ani bych se nedivil ;), jen jsem si to neuvědomil, kompletní varianta by byla opravdu o kus delší, nicméně jednou se napíše a pak se používá. I krátká varianta s popen bude delší.

    Ono to o BASH bude asi trochu pravda, ale je to tím k čemu slouží s čím musí být kompatibilní.

    S cykly nemám problém jsem to v zásadě omezil na while :; do (výjimečně s podmínkou) a for((;;)) což jsou normální cykly (for .. inh se někdy taky hodí, ale většinou zjistím, že vlastně potřebuji for((;;)) ), ale někdy zápolím s podmínkami (chci používat jen [[ ]] a někdy mi to nevyjde)

    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    9.5.2014 12:55 R
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Niekolko bash skriptov som prepisoval do PHP (hlavne kvoli vykonu). Vysledkom bolo menej riadkov, omnoho prehladnejsi kod a radovo vyssia rychlost. V PHP je vela casto potrebnych funkcii integrovanych, takze system() sa pouziva velmi zriedkavo. A kedze sa nemusi stale forkovat, je to podstatne rychlejsie.
    pavlix avatar 9.5.2014 13:19 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Přepisovat něco z bashe do PHP mi přijde jako udělat hromadu práce jen abych se dostal na půl cesty.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    9.5.2014 14:27 Radek Hladik | skóre: 20
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Tak pokud je na PHP zvyklej, tak proč ne (teda pokud mu stačí výkon interpretovaného jazyka). Já taky mám spoustu systémových skriptů v PHP a nemůžu si to vynachválit. Prostě mám radší PHP než perl, python, ruby,... a co si budem povídat, tak většina takovýchto skriptů je o tom sezbírat nějakej vstup, ten párkrát nějak zpracovat a udělat výstup. A PHP/perl/python jsou přesně jazyky, kde se to dělá pohodlně (výhoda oproti bashi) a většinou dostatečně rychle (nevýhoda oproti C/C++).

    Ostatně, zkoušel si někdo, jak je na tom PHP/perl/python oproti C/C++ ve skutečnosti? Jak už jsem tu někde psal, tak když jsem kdysi zkoušel napsat v PHP modul pro PowerDNS na načítání zone file z tinydns, tak jsem byl poměrně mile překvapen...
    9.5.2014 18:46 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Pokud to pies pro sebe - proc ne, ale mit systemovy skripty v php na pracovnich systemech nebo vubec na strojich, s ktere administruje vic lidi. To radeji ne :-)
    Ostatně, zkoušel si někdo, jak je na tom PHP/perl/python oproti C/C++ ve skutečnosti? Jak už jsem tu někde psal, tak když jsem kdysi zkoušel napsat v PHP modul pro PowerDNS na načítání zone file z tinydns, tak jsem byl poměrně mile překvapen...
    Samozrejme zalezi jak kde ...
    9.5.2014 20:37 Radek Hladik | skóre: 20
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Pokud to pies pro sebe - proc ne, ale mit systemovy skripty v php na pracovnich systemech nebo vubec na strojich, s ktere administruje vic lidi. To radeji ne :-)
    No to je docela otázka, proč by ne. Já to mám na pracovnich strojích, kde to adminuje víc lidí a vůbec to není problém. A to proto, že ty lidi, co ty skripty používaj, je používají podle toho, jak se používat mají a pokud není potřeba, tak se dovnitř nešahá. Což ostatně platí úplně u všech skriptů a programů. A pokud někdo už musí do zdrojáku, pak je výrazně podstatnější, jak přehledně je ten skript napsaný než v čem je napsaný.
    Ostatně, zkoušel si někdo, jak je na tom PHP/perl/python oproti C/C++ ve skutečnosti? Jak už jsem tu někde psal, tak když jsem kdysi zkoušel napsat v PHP modul pro PowerDNS na načítání zone file z tinydns, tak jsem byl poměrně mile překvapen...
    Samozrejme zalezi jak kde ...
    To je taková všezahrnující odpověď. Ano, záleží jak kde, ale jak jsem psal, byl jsem mile překvapen, že ten rozdíl nebyl tak strašný, jak by se dalo očekávat. Pro představu: starý testovací stroj, nějaký P3 800MHz a zónový soubor s cca 40k DNS záznamy, což je už poměrně dost (řekněme třeba 1000 domén). Celé to zabralo 45MB RAMky a dotaz v průměru trval 0.00023 sekundy. Což je sice možná x-krát víc, než nativní aplikace v C, ale na druhou stranu je to naprosto dostačující.

    Ale přesto, když před někým řeknu "systémová věc napsaná v PHP", tak je to jak červený hadr na býka, odpovědi typu "To radeji ne", ale když se nad tím člověk objektivně zamyslí...
    9.5.2014 21:59 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    No rekneme, ze mame trochu jinou profesionalni zkusenost. ;-)
    9.5.2014 22:38 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Ono to záleží na tom, jestli je to ještě administrační skript nebo jen používaná utilita, ta může být v C, Pythonu či PHP a admin se v tom babrat normálně nebude a pokud ano, holt už potřebuje specifickou znalost. Mám takový jeden v PHP, který byl původně v Pythonu, ale byl dost sprasený a nedokázal jsem ho jen opravit, musel jsem ho přepsat a třeba v BASH by to bylo fakt utrpení, Python nechci, a v kompilovaném jazyku je to zas málo flexibilní. Pokud se v takovém scriptu neblbne objektově slušně se to okomentuje a vypichnou se konfigurační proměnné, tak i to PHP je srozumitelné komukoliv kdo ví co je funkce, if a while, pokud ne tak to má jakoby by to bylo v C tedy utrum (, bo kdo zná základy C měl by být schopen přečíst PHP).
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    9.5.2014 18:44 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Holt bash jde proti uzivateli jak to jen jde :-) - jedna naslapna mina vedle druhy :-)
    $ [[ "${today}" -eq 1 ]]; echo $?
    bash: [[: 09: value too great for base (error token is "09")
    1
    
    I kdyz ten priklad by mel imho fungovat, i presto ze to "vybouchne".
    9.5.2014 21:49 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    No a tom je ten blog - neměl by fungovat, má to jasně definováno. Devítka prostě v osmičkové soustavě neexistuje.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    9.5.2014 21:51 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Ale vzdyt to ten if executne jen prvniho.
    lukas@x200:~$ date
    Fri May  9 20:50:21 BST 2014
    lukas@x200:~$ today="$(/bin/date '+%d')"
    lukas@x200:~$ if [[ "${today}" -eq 1 ]]; then
    >   echo "Do action on the 1st of month..."
    > fi
    bash: [[: 09: value too great for base (error token is "09")
    
    9.5.2014 22:47 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty

    Nerozumím řeči tvého kmene.

    echo "$today"
    09
    
    -eq porovnává čísla, tedy se $today převádí na číslo a protože string reprezentující číslo uvozený 0 se bere jako v osmičkové soustavě, tak to padne na hubu a hlásí ti to, že ani 8 ani 9 v osmičkové soustavě neexistuje, tak a to jsou ty dva dny v měsíci kdy to nefunguje a vo tom to celé je.

    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    9.5.2014 22:56 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    U me to teda na hubu nepadne, vypise chybu na stderr a vrati 1 (tudiz false).
    lukas@x200:~$ cat opravdu.sh 
    if [[ 09 -eq 1 ]]; then
        echo "AAA"
    else
        echo "BBB"
    fi
    echo "afters"
    lukas@x200:~$ bash opravdu.sh 
    opravdu.sh: line 1: [[: 09: value too great for base (error token is "09")
    BBB
    afters
    
    bash no :-P
    9.5.2014 23:16 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty

    Dobře, nevyjádřil jsem se přesně nepadne to na hubu (ať to znamená cokoliv), o padnutí na hubu by se dalo mluvit pokud se má akce dělat 8 nebo 9 - ta by se neprovedla nikdy (nebo se právě 8 a 9 nemá dělat, což by se provedla).

    A je to přece správně 09 se nerovná 1 (ani 9) protože to nelze porovnat, ale mnohem zajímavější (i když plně logické), pokud tam dáš -ne bude to zas false a pokud to zneguješ ! bude furt true.

    A chování je v pořádku, dle dokumentace, ten kdo je mimo je scriptovač…
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    16.5.2014 15:54 rich
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty
    Nemusim nic doinstalovavat ani prepisovat do jinych jazyku. Staci upravit podminku tak aby to odpovidalo tomu co vraci 'date' a jak funguje bash ;-)

    if [[ "08" -eq 8 ]]; then echo ok; else echo kwok;fi bash: [[: 08: value too great for base (error token is "08") kwok

    if [[ "08" = "08" ]]; then echo ok; else echo kwok;fi ok

    prijde mi ta diskuse celkem dlouha a o nicem
    16.5.2014 23:28 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zas dva dny v měsíci kdy zlobí BASH skripty

    Ano, použil si jednu z roje možností a porovnal jsi to textově (což sice lze, ale blbě se s tím počítá a jakmile začneš si tam kde jsem byl…), date vrací to, o co si řekneš a o tom to taky je a i většina z možností z diskuze je o tom jak funguje BASH a řekl bych, že diskuze je právě o těch možnostech, kde všechny jsou správně a každá je trochu jiná a jindy vhodná, pokud se ovšem neudělají chybně.

    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.