Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    [Bash] Passare a programma elenco argomenti identico all'originale

    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263
    codice:
    #!/bin/bash
    cd /usr/share/MioProgramma
    java -jar MioProgramma.jar "$@"

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304


    Io sono un cretino... e c'ho sbattuto la testa sopra per ore...

    Grazie mille.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.