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

Vyzkoušet si příkazy a vyřešit několik úkolů lze na stránkách Commandline Challenge (CMD Challenge). Úkoly lze řešit různými způsoby, důležitý je výsledek. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

Ladislav Hagara | Komentářů: 1
včera 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 23
17.2. 15:30 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje, že bezpečnostní experti objevili nový typ malwaru, jenž cílí na open source e-commerce platformu Magento. Malware je zajímavý tím, že se jedná o první svého druhu, jehož kód zůstává skrytý v SQL databázi zasaženého e-shopu. Škodlivý kód je volán pomocí tzv. SQL trigerru, který je spouštěn při každém vytvoření objednávky v systému.

Ladislav Hagara | Komentářů: 1
17.2. 09:00 | Nová verze

Bylo vydáno Ubuntu 16.04.2 LTS, tj. druhé opravné vydání Ubuntu 16.04 LTS s kódovým názvem Xenial Xerus. Přehled novinek v poznámkách k vydání a v přehledu změn.

Ladislav Hagara | Komentářů: 39
17.2. 06:00 | Zajímavý článek

Pavel Tišnovský se v dvoudílném článku na MojeFedora.cz věnuje tvorbě pluginů (modulů) pro bitmapový grafický editor GIMP. Pomocí pluginů lze GIMP rozšiřovat o další funkce. Implementovat lze například nové filtry nebo pomocné utility pro tvorbu animací či poloautomatickou retuš snímků.

Ladislav Hagara | Komentářů: 6
16.2. 23:32 | Komunita

Do 30. března se lze přihlásit do dalšího kola programu Outreachy, jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 30. května do 30. srpna 2017, v participujících organizacích lze vydělat 5 500 USD. Jedná se již o 14. kolo tohoto programu.

Ladislav Hagara | Komentářů: 11
16.2. 23:13 | Nová verze

Byla vydána verze 0.92.1 svobodného multiplatformního vektorového grafického editoru Inkscape. Přehled novinek v poznámkách k vydání. Řešen je mimo jiné problém s verzí 0.92, jež rozbíjí dokumenty vytvořené v předchozích verzích Inkscape. Více v příspěvku na blogu Davida Revoye, autora open source webového komiksu Pepper&Carrot nebo portrétu GNU/Linuxu.

Ladislav Hagara | Komentářů: 0
16.2. 16:26 | Bezpečnostní upozornění

Byla vydána verze 1.1.0e kryptografické knihovny OpenSSL. Dle bezpečnostního upozornění 20170216 byla opravena závažná bezpečnostní chyba CVE-2017-3733.

Ladislav Hagara | Komentářů: 1
16.2. 13:03 | Pozvánky

GNOME hackaton proběhne v Brně na FIT VUT v Red Hat Labu (budova Q) v pondělí 20. února od 15:00. Registrace není nutná, ale pokud dáte na FaceBooku vědět, že plánujete dorazit, pomůže to s plánováním.

Ladislav Hagara | Komentářů: 0
16.2. 13:02 | Pozvánky

Únorový Prague Containers Meetup se koná 21. února v budově MSD. Můžete se těšit na přednášky o tom, proč a jak používat kontejnery a zároveň získat zajímavý pohled na historii a budoucnost kontejnerů.

little-drunk-jesus | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 656 hlasů
 Komentářů: 52, poslední 13.2. 12:45
Rozcestník
Reklama

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: 237×

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"

Pevne verim, ze zkusenejsi uzivatele me s mymi napady usmerni a poslou tam, kam tyto napady patri...
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.