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:
e questi parametri devono essere passati tali e quali al programma in Java. Inizialmente ho fatto questo:codice:$ pippo param1 param2 "una mia stringa" param4 "altra stringa"
Ma l'espansione di $@ mi elimina completamente le virgolette ed il mio programma risulta invocato in questo modo:codice:#!/bin/bash cd /usr/share/MioProgramma java -jar MioProgramma.jar $@
Da 5 parametri, me ne trovo 8... e non va bene.codice:$ java -jar MioProgramma.jar param1 param2 una mia stringa param4 altra stringa
Allora, documentandomi, sono giunto a questa (inizialmente presunta) soluzione:
Ho messo anche un echo per verificare la correttezza... L'eco a video è (quasi) corretto:codice:#!/bin/bash a=("${@/#/\"}") a=("${a[@]/%/\"}") params=`echo "${a[@]}"` echo $params cd /usr/share/MioProgramma java -jar MioProgramma.jar $params
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.codice:"param1" "param2" "una mia stringa" "param4" "altra stringa"
Esiste un modo per far sì che al programma vengano passati gli argomenti esattamente come essi sono passati allo script?
Grazie della pazienza.
Ciao.![]()



Rispondi quotando
