Portál AbcLinuxu, 12. května 2025 18:24
java "-Dahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystoreVe scriptu tedy mám:
echo java \"-Dahoj=x wee\" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore java \"-Dahoj=x wee\" -cp .:lib/* utils.keystore.tmp.TestConfigKeystoreProblé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=xPozn: úč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.
"-Dahoj=x wee"
-D je přepínač, zkuste dát ty uvozoky až za něj, tedy -D"ahoj=a hoj".
echo java -D\"ahoj=x wee\" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore java -D\"ahoj=x wee\" -cp .:lib/* utils.keystore.tmp.TestConfigKeystorea 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.
java -D"ahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore java "-Dahoj=x wee" -cp .:lib/* utils.keystore.tmp.TestConfigKeystoreAle 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 $ia 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
i="-Dahoj=a hoj -Dcau=c a u" echo $i java "$i" PropProperties se předají.
i="-Dahoj=x wee" j=" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore" java "$i" $jale tohle už ne
i="-Dahoj=x wee" j=" -cp .:lib/* utils.keystore.tmp.TestConfigKeystore" java "$i" "$j"
#!/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)); } } }
POLE=("prvni prvek" "druhy prvek")
for ((i=0; i<${#POLE[*]}; $i++)); do
... něco s prvkem $POLE[$i]
done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.