Salve ragazzi.
Devo riuscire a passare ad un mio programma Java l'intero elenco degli argomenti che arriva allo script. Il problema nasce dal fatto che alcuni di questi parametri possono essere composti da stringhe contenenti spazi. Faccio un esempio per chiarire. Se il mio script si chiama "pippo", lo posso chiamare in questo modo:
codice:
$ pippo param1 param2 "una mia stringa" param4 "altra stringa"
e questi parametri devono essere passati tali e quali al programma in Java. Inizialmente ho fatto questo:
codice:
#!/bin/bash
cd /usr/share/MioProgramma
java -jar MioProgramma.jar $@
Ma l'espansione di $@ mi elimina completamente le virgolette ed il mio programma risulta invocato in questo modo:
codice:
$ java -jar MioProgramma.jar param1 param2 una mia stringa param4 altra stringa
Da 5 parametri, me ne trovo 8... e non va bene.
Allora, documentandomi, sono giunto a questa (inizialmente presunta) soluzione:
codice:
#!/bin/bash
a=("${@/#/\"}")
a=("${a[@]/%/\"}")
params=`echo "${a[@]}"`
echo $params
cd /usr/share/MioProgramma
java -jar MioProgramma.jar $params
Ho messo anche un echo per verificare la correttezza... L'eco a video è (quasi) corretto:
codice:
"param1" "param2" "una mia stringa" "param4" "altra stringa"
Ci sono le virgolette per ciascun parametro, ma questo non sarebbe affatto un problema. Il problema nasce dal fatto che il programma non riceve affatto l'elenco corretto. Se provo a far stampare al programma (uno sotto l'altro) l'elenco degli argomenti ricevuti, ottengo questa cosa qua:
codice:
"param1"
"param2"
"una
mia
stringa"
"param4"
"altra
stringa"
Ancora 8 argomenti.
Esiste un modo per far sì che al programma vengano passati gli argomenti esattamente come essi sono passati allo script?
Grazie della pazienza.
Ciao.