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í
×
    včera 14:11 | IT novinky

    Jihokorejská kryptoměnová burza Bithumb přiznala vážné selhání interních systémů, které ji vystavilo riziku sabotáže a nezabránilo chybné transakci v hodnotě přes 40 miliard dolarů (814 miliard Kč). Druhá největší kryptoměnová burza v Koreji minulý týden při propagační akci omylem rozeslala zákazníkům zhruba 620 000 bitcoinů místo 620 000 wonů (8700 Kč). Incident vyvolal pokles ceny bitcoinu o 17 procent. Většinu

    … více »
    Ladislav Hagara | Komentářů: 6
    včera 13:55 | Nová verze

    Google Chrome 145 byl prohlášen za stabilní. Nejnovější stabilní verze 145.0.7632.45 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Zpátky je podpora grafického formátu JPEG XL, viz Platform Status. Odstraněna byla před třemi lety. Nový dekodér JPEG XL jxl-rs je napsán v Rustu. Zobrazování JPEG XL lze vyzkoušet na testovací stránce. Povolit lze v nastavení chrome://flags (Enable JXL image format).

    Ladislav Hagara | Komentářů: 0
    10.2. 22:44 | Nová verze

    Byla vydána nová verze 1.26 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    10.2. 18:11 | Nová verze

    CrossOver, komerční produkt založený na Wine, byl vydán ve verzi 26. Přehled novinek v ChangeLogu. CrossOver 26 vychází z Wine 11.0, D3DMetal 3.0, DXMT 0.72, Wine Mono 10.4.1 a vkd3d 1.18. Do 17. února lze koupit CrossOver+ se slevou 26 %.

    Ladislav Hagara | Komentářů: 13
    10.2. 14:22 | Komunita

    KiCad je nově k dispozici také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit [Mastodon, 𝕏].

    Ladislav Hagara | Komentářů: 0
    10.2. 13:22 | Zajímavý projekt

    Šenčenská firma Seeed Studio představila projekt levného robotického ramena reBot Arm B601, primárně coby pomůcky pro studenty a výzkumníky. Paže má 6 stupňů volnosti, dosah 650 mm a nosnost 1,5 kilogramu, podporované platformy mají být ROS1, ROS2, LeRobot, Pinocchio a Isaac Sim, krom toho bude k dispozici vlastní SDK napsané v Pythonu. Kompletní seznam součástek, videonávody a nejspíš i cena budou zveřejněny až koncem tohoto měsíce.

    … více »
    NUKE GAZA! 🎆 | Komentářů: 9
    10.2. 11:11 | Nová verze

    Byla vydána nová verze 36.0, tj. první stabilní verze nové řady 36, svobodného multimediálního centra MythTV (Wikipedie). Přehled novinek a vylepšení v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 1
    10.2. 04:44 | Nová verze

    Byl vydán LineageOS 23.2 (Mastodon). LineageOS (Wikipedie) je svobodný operační systém pro chytré telefony, tablety a set-top boxy založený na Androidu. Jedná se o nástupce CyanogenModu.

    Ladislav Hagara | Komentářů: 5
    10.2. 03:44 | IT novinky

    Od března budou mít uživatelé Discordu bez ověření věku pouze minimální práva vhodná pro teenagery.

    Ladislav Hagara | Komentářů: 23
    9.2. 23:43 | IT novinky

    Evropská komise (EK) předběžně shledala čínskou sociální síť pro sdílení krátkých videí TikTok návykovým designem v rozporu s unijním nařízením o digitálních službách (DSA). Komise, která je exekutivním orgánem Evropské unie a má rozsáhlé pravomoci, o tom informovala v tiskovém sdělení. TikTok v reakci uvedl, že EK o platformě vykreslila podle něj zcela nepravdivý obraz, a proto se bude bránit.… více »

    Ladislav Hagara | Komentářů: 25
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (11%)
     (26%)
     (3%)
     (5%)
     (2%)
     (12%)
     (28%)
    Celkem 844 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: spuštění java příkazu pomocí shell scriptu

    4.4.2008 12:25 Pev | skóre: 28
    spuštění java příkazu pomocí shell scriptu
    Přečteno: 1069×
    Dobrý den,

    snažím se pustit tento příkaz ze scriptu
    java "-Dahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore
    
    Ve scriptu tedy mám:
    echo java \"-Dahoj=x  wee\" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore
    java \"-Dahoj=x  wee\" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore
    
    Problém je, že skript sice vypíše text (java "-Dahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore), kt. vložený do terminálu jde spustit, ale samotné spuštění ze scriptu skonči chybou:
    Exception in thread "main" java.lang.NoClassDefFoundError: "-Dahoj=x
    
    Pozn: účelem je předat java system property, kt. obsahuje mezeru a proto by měla být zapsána takto: "-Dahoj=x wee" (kde dát uvozovky jsem čerpal odsud).

    Díky za tipy.

    Odpovědi

    Heron avatar 4.4.2008 12:33 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    "-Dahoj=x wee"

    -D je přepínač, zkuste dát ty uvozoky až za něj, tedy -D"ahoj=a hoj".

    4.4.2008 12:39 Pev | skóre: 28
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    To je právě to... co už jsem taky zkoušel předtím než jsem napsal
    echo java -D\"ahoj=x  wee\" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore
    java -D\"ahoj=x  wee\" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore
    
    a dá to výstup
    java -D"ahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore
    Exception in thread "main" java.lang.NoClassDefFoundError: wee"
    
    Jinak ten příkaz java -D"ahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore spustit opět jde, takže ten samý problém.

    Můj první příklad mi přišel taky nelogický, proto jsem rovnou uváděl ten link, odkud jsem čerpal.
    Heron avatar 4.4.2008 12:36 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    A také se mi tam nelíbí ta lomítka.
    4.4.2008 12:45 Pev | skóre: 28
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    Aha, tak tohle ve skriptu funguje
    java -D"ahoj=x  wee" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore
    java "-Dahoj=x  wee" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore
    
    Ale abych byl přesnější, potřebuju spustit tento skript (z důvodů, jež nechci rozepisovat, ale proto tam jsou ta lomítka):
    i=' "-Dahoj=x  wee" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore'
    echo java $i
    java $i
    
    a ten dá výstup java "-Dahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore Exception in thread "main" java.lang.NoClassDefFoundError: "-Dahoj=x

    Stejný výstup dá i skript
    i=" \"-Dahoj=x  wee\" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore"
    echo java $i
    java $i
    
    Heron avatar 4.4.2008 13:11 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    Tak tohle vypadá na problém v expanzi uvozovek a escape znaků v bashi. V tom se příliš nevyznám. Ale tohle je funkční:
    i="-Dahoj=a hoj -Dcau=c a u"
    echo $i
    java "$i" Prop
    
    Properties se předají.
    4.4.2008 13:34 Pev | skóre: 28
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    Jo díky, to opravdu jede.

    Zajímavé je, že tohle jede
    i="-Dahoj=x  wee"
    j=" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore"
    java "$i" $j
    
    ale tohle už ne
    i="-Dahoj=x  wee"
    j=" -cp .:lib/*  utils.keystore.tmp.TestConfigKeystore"
    java "$i" "$j"
    
    4.4.2008 13:59 alik
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    je to prirozene, ve druhem pripade se procesu predaji pouze dva parametry, nebot mezery v promenne j nejsou interpretovany jako oddelovac parametru - to je ostatne presne ucel tech uvozovek.

    jen poznamka - porovnavani s tim co vypise echo je v techto situacich velmi zavadejici, protoze tam hranice parametru nejsou videt.
    Heron avatar 4.4.2008 14:09 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    V případě spouštění bash -x ano, první řádek skriptu by vydadal takto:
    #!/bin/bash -x
    11.4.2008 08:49 Pev | skóre: 28
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    Ne, tak takhle volání sice neskončí chybou, ale misto 2 properties se předa jedna ahoj s hodnotou "a hoj -Dcau=c a u".

    Takže se budou muset predávat proměnné zvlášť (a to je trochu komplikované tím, že nevím, kolik těch proměnných bude).

    Je celý ten problém problémem javy nebo bashe?
    11.4.2008 14:32 Jiří Tušla
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    S tímhle se předává libovolnej počet uživatelsky definovanejch proměnnejch

    #!/bin/bash 
    params="";
    for i in `seq 1 10`;
    do
            params="${params} \"-Dparam${i}=value with space ${i}\""
    done
    echo $params
    eval "java $params -cp . Main"
    Kód příslušného testovacího programu v Javě je tenhle:

    import java.util.Enumeration;
    import java.util.Properties;
    public class Main {   
        public static void main(String[] args) {
            Properties params = System.getProperties();
            Enumeration keys = params.propertyNames();
            while (keys.hasMoreElements()) {
                String key = (String) keys.nextElement();
                System.out.println(key + " => " + params.getProperty(key));
            }
        }
    }
    
    11.4.2008 18:24 Pev | skóre: 28
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    Díky za tip.

    Já to nakonec vyřešil pomocí polí. Vůbec jsem netušil, že jdou v bashi používat. Pak se proste vezme velikost pole a nemusí se dávat dostatečně velký počet běhů při for (v mém připadě jsem uvažoval o hodnotě 100, s tím, že v některých skriptech by ten běh nebyl nutný vůbec).

    Též jiná možnost volání cyklu for mě překvapila.
    
    POLE=("prvni prvek" "druhy prvek")
    for ((i=0; i<${#POLE[*]}; $i++)); do
    ... něco s prvkem $POLE[$i]
    done
    
    11.4.2008 20:22 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: spuštění java příkazu pomocí shell scriptu
    POLE=("prvni prvek" "druhy prvek")
    for ((i=0; i<${#POLE[@]}; i++)); do
    ... něco s prvkem ${POLE[$i]}
    done

    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.