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í
×
    včera 19:11 | Nová verze

    Open source RDP (Remote Desktop Protocol) server xrdp (Wikipedie) byl vydán ve verzi 0.10.0. Z novinek je vypíchnuta podpora GFX (Graphic Pipeline Extension). Nová větev řeší také několik bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 1
    včera 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
    9.5. 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ářů: 13
    9.5. 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ářů: 23
    9.5. 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ářů: 7
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (63%)
     (8%)
     (14%)
     (16%)
    Celkem 152 hlasů
     Komentářů: 11, poslední včera 18:00
    Rozcestník

    Dotaz: Bash: Spravny zapis hodnoty premennej

    31.10.2010 10:35 Patrik Uhrak | skóre: 31 | blog: pato
    Bash: Spravny zapis hodnoty premennej
    Přečteno: 263×

    Zdravim.

    Snazim sa o spravny zapis v tomto pripade:

    #! /bin/bash
    DATE="$(which date)"

    NOW_CMD="$DATE +%s"
    TODAY_CMD="$DATE +%F"
    TOMORROW_CMD="$DATE -d tomorrow +%F"
    # potialto je to v poriadku

    # toto uz ale v poriadku nie je
    SINCE="$DATE "$($TODAY_CMD) ${1}" +%s"

    Potrebujem dostat vzdy aktualny cas v cykle a preto takto. Ci je to ten najidealnejsi sposob, neviem, ale ...

    Vysledok vyssie uvedeneho prikladu je takyto:

    pato@debian:~$ bash -x ./test.bash 15:00
    ++ which date
    + DATE=/bin/date
    + NOW_CMD='/bin/date +%s'
    + TODAY_CMD='/bin/date +%F'
    + TOMORROW_CMD='/bin/date -d tomorrow +%F'
    ++ /bin/date +%F
    + SINCE='/bin/date 2010-10-31'
    + '15:00 +%s'
    ./test.bash: line 50: 15:00 +%s: command not found

    Ako ho donutit, aby to 15:00 bral ako vstup pre date a nie ako novy prikaz? Tusim v kostiach, ze to bude trivialne, ale mna tu nic nenapada momentalne. Dakujem.


    Řešení dotazu:


    Odpovědi

    David Watzke avatar 31.10.2010 11:38 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Spravny zapis hodnoty premennej
    I kdybyste to zapsal správně, snažíte se spouštět něco jako
    $ date "2010-10-31 15:00" +%s
    date: nadbytečný operand „+%s“
    Více informací získáte příkazem „date --help“.
    což nedává smysl. Můžete to nejdřív objasnit?
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    31.10.2010 13:08 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Bash: Spravny zapis hodnoty premennej

    Presne, ja tomu rozumiem, co sa tam deje. Moj problem je, ako takemuto chovaniu zabranit/predist? Keby ste uvodzil hodnoty pre date, aby sa chovali ako jeden retazec, tak by dal spravny vysledok. Ako toto ale aplikovat do mojho postupu z prveho prispevku?

    31.10.2010 13:44 mato
    Rozbalit Rozbalit vše Re: Bash: Spravny zapis hodnoty premennej
    tak ako hore uviedol david, musis potom pastnut vacsiu cast scriptu alebo aspon zistit a povedat co je logika scriptu .. tie tvoje ""treba escapnut, alebo prepisat na:
    
    DATE="`which date`"             # ; just in case
    
    NOW_CMD="`$DATE +%s`"
    TODAY_CMD="`$DATE +%F`"
    TOMORROW_CMD="`$DATE -d tomorrow +%F`"
    
    SINCE="`$DATE $($TODAY_CMD $1) +%s`"
    
    pricom tie uvodzovky su tam pre istotu, keby naahodou date cmd bol v nestandardnej ceste, napr /usr/very\ nasty\ location/bin

    pricom "2010-10-31 15:00" je blbost

    31.10.2010 14:42 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Bash: Spravny zapis hodnoty premennej

    Dakujem za prispevok, ale mam par pripomienok:

    1. Co je blbost na tomto: "2010-10-31 15:00" ?

    Skus toto:

    date --date "2010-10-31 15:00" +%s

    2. Ako escapujes ty? Lebo ja ziadne escapovanie nevidim v tvojej uprave.

    3. V podstate si prepisal com som dal ja a plus jedna chyba. (ale to sa mi hovori, ked ja som mal vo svojom skriptu od zaciatku)

    K tej chybe, toto je tvoje:

    SINCE="`$DATE $($TODAY_CMD $1) +%s`"

    co sa da zapisat aj takto:

    SINCE="$(date --date $(date +%F 15:00) +%s)"

    Spravne to je v mojom rieseni, je nutne prv vykonat date +%F a az potom pridat 15:00 k tomu. ;)

     

    Toto je o tom prepisani vlastne;

    VAR1="`date +%s`"
    VAR2="$(date +%s)"
    echo "$VAR1"
    echo "$VAR2"

    Tie sposoby zapisu su totiz ekvivalentom. Akurat ten druhy je lepsie citatelny a je mozne vnorovat dalsie a dalsie prikazy. Vid vlastne moje riesenie tejto temy. ;)

     

    Kazdopadne, ziadna zast ani cokolvek ineho necitim. Snazil si sa pomoct, cenim si to a to je tak vsetko.

    31.10.2010 15:57 mato
    Rozbalit Rozbalit vše Re: Bash: Spravny zapis hodnoty premennej
    mne netrklo ze "2010-10-31 15:00" je datum a cas :) moja chyba

    ja som hore uviedol,ze je mozne pouzit alt. zapis, kde sa potom nestratis v uvodzovkach (alebo aspon nie tak rychlo)
    ako si doplnil date --date -> to uz ale meni podstatu toho, co ten script ma robit - preto som sa pytal, ze co chces dosiahnut a povedal, ze cmd "datum 14:00" je blbost .. v spojeni s prepinacom --date je to vsak uz cosi ine

    hlavne, ze si to vyriesil :)

    31.10.2010 16:51 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Bash: Spravny zapis hodnoty premennej

    Ok, rozumiem. Ale popravde, to o tej blbosti mi pomohlo paradoxne najviac. Som ti chcel dat ten priklad a sa ukazalo, ze mi tam chybalo to --date. Samozrejme uplne vsade. :)

    Co sa ale tyka toho alternativneho zapisu, mne nepride az taky prehladny. ;) Ale mozno vec nazoru.

    31.10.2010 11:46 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
    Rozbalit Rozbalit vše Re: Bash: Spravny zapis hodnoty premennej

    Dobry den

    Nepomohly by zpetne lomitka ?

    SINCE="$DATE \"$($TODAY_CMD) ${1}\" +%s"

    Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
    31.10.2010 13:18 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Bash: Spravny zapis hodnoty premennej

    Dakujem, to som uz skusal, zial to nepomaha. Samotna hodnota SINCE je sice v spravnom tvare aj uvodzenie je spravne, ale pri jeho vykonani opat nastane rovnaky problem. Vid nizsie:

    DATE="$(which date)"

    NOW_CMD="$DATE +%s"
    TODAY_CMD="$DATE +%F"
    TOMORROW_CMD="$DATE -d tomorrow +%F"
    # potialto je to v poriadku

    # toto uz ale v poriadku nie je
    SINCE="$DATE \"$($TODAY_CMD) ${1}\" +%s"
    $SINCE

    a vysledok:

    pato@debian:~$ bash -x ./test.bash 15:00
    ++ which date
    + DATE=/bin/date
    + NOW_CMD='/bin/date +%s'
    + TODAY_CMD='/bin/date +%F'
    + TOMORROW_CMD='/bin/date -d tomorrow +%F'
    ++ /bin/date +%F
    + SINCE='/bin/date "2010-10-31 15:00" +%s'
    + /bin/date '"2010-10-31' '15:00"' +%s
    /bin/date: extra operand `15:00"'
    Try `/bin/date --help' for more information.

    Kazdopadne dakuje, sam som to nespomenul predtym.

    31.10.2010 14:28 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Bash: Spravny zapis hodnoty premennej

    Vyriesene. Chyba bola trivialna, spravna syntax pre konvert daneho casu je nasledovna:

    date --date "cas" +%[moznosti] # z hlavy som to pisal a nejak som pozabudol

    Takze riesenie bolo uz v prvom mojom prispevku v poriadku, az na tu malickost:

    DATE="$(which date)"

    NOW_CMD="$DATE +%s"
    TODAY_CMD="$DATE +%F"
    TOMORROW_CMD="$DATE -d tomorrow +%F"

    for INDEX in {1..9}
    do
    SINCE="$($DATE --date "$($TODAY_CMD) ${1}:0${INDEX}" +%s)"
    sleep 1
    done

    a vysledok je presne ako som pozadoval, s kazdou jednou iteraciou ziskat aktualny cas:

    pato@debian:~$ bash -x ./test.bash 14:00
    ++ which date
    + DATE=/bin/date
    + NOW_CMD='/bin/date +%s'
    + TODAY_CMD='/bin/date +%F'
    + TOMORROW_CMD='/bin/date -d tomorrow +%F'
    + for INDEX in '{1..9}'
    +++ /bin/date +%F
    ++ /bin/date --date '2010-10-31 14:00:01' +%s
    + SINCE=1288533601
    + sleep 1
    + for INDEX in '{1..9}'
    +++ /bin/date +%F
    ++ /bin/date --date '2010-10-31 14:00:02' +%s
    + SINCE=1288533602
    + sleep 1
    + for INDEX in '{1..9}'
    +++ /bin/date +%F
    ++ /bin/date --date '2010-10-31 14:00:03' +%s
    + SINCE=1288533603
    + sleep 1
    + for INDEX in '{1..9}'
    +++ /bin/date +%F
    ++ /bin/date --date '2010-10-31 14:00:04' +%s
    + SINCE=1288533604
    + sleep 1
    + for INDEX in '{1..9}'
    +++ /bin/date +%F
    ++ /bin/date --date '2010-10-31 14:00:05' +%s
    + SINCE=1288533605
    + sleep 1
    + for INDEX in '{1..9}'
    +++ /bin/date +%F
    ++ /bin/date --date '2010-10-31 14:00:06' +%s
    + SINCE=1288533606
    + sleep 1
    + for INDEX in '{1..9}'
    +++ /bin/date +%F
    ++ /bin/date --date '2010-10-31 14:00:07' +%s
    + SINCE=1288533607
    + sleep 1
    + for INDEX in '{1..9}'
    +++ /bin/date +%F
    ++ /bin/date --date '2010-10-31 14:00:08' +%s
    + SINCE=1288533608
    + sleep 1
    + for INDEX in '{1..9}'
    +++ /bin/date +%F
    ++ /bin/date --date '2010-10-31 14:00:09' +%s
    + SINCE=1288533609
    + sleep 1

    Takze uz je to v poriadku. Dakujem vsetkym.

     

    
                

    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.