Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143

    Bash - passare array a funzioni

    Salve, sto facendo un po di pratica con gli script bash, non capisco se è possibile passare un array ad una funzione. Mettiamo che io abbia due array che voglio passare ad una funzione che li analizza per fare per esempio dei confronti, come faccio a passare gli array alla funzione?
    Se scrivo
    codice:
    function $v1 $v2
    passa solo il primo elemento, mi pare di aver capito.
    Grazie


  2. #2
    ...Le prossime, della serie di trucchi del mestiere, sono le tecniche per il passaggio di un array a una funzione ...


    http://www.pluto.it/files/ildp/guide...ortedtips.html

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143
    Ciao, grazie per il link, il problema relativo alla funzione è ok.
    Soltanto che ora il problema è più a monte:
    il mio script vorrei che ricevesse l'array al momento del lancio dal prompt.

    codice:
    mioScript.sh $vettore
    Il metodo che spiega nel link non mi risolve il problema. Dunque io so che mioScript.sh riceve il vettore argomento nel parametro $1.
    Come faccio ad inizializzare un array nello script che prenda vettore in $1?

    Con la funzione si fa così:

    codice:
    funzione()
    {
     array_passato=( `echo "$1"` )
     .....
    }
    
    array_originale=( 1 2 3 4 )
    argomento=`echo ${arra_originale[*]}`
    
    funzione $argomento
    Quindi avevo pensato di ricevere il contenuto di $1 della chiamata in questo modo:

    codice:
    arg=`echo ${1[*]}`
    ma dice "bad substitution"

    Oppure:

    codice:
    arg=( `echo "$1"` )
    ma così passa solo il primo elemento.
    Qualcuno mi sa dire che cosa sto sbagliando?
    Grazie mille

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143
    Forse ho risolto il problema:
    il modo con cui ho provato ha lanciare lo script è identico alla soluzione del problema delle funzioni; in pratica ho pensato che, da quello che capisco nel link suggeritomi, pare serva una conversione del vettore in un'unica stringa, dentro la funzione viene riconvertita in vettore.
    Per cui credo sia compito di chi lancia lo script occuparsi della prima conversione:

    codice:
    vettore=( 5 4 3 )
    argomento=`echo ${vettore[*]}`
    ./mioScript.sh $argomento
    Dopo quando dentro lo script serve usare i valori del vettore si converte:

    codice:
    ...
    
    vettore_passato=( `echo "$1"` )
    
    ...
    Se qualche animo gentile mi confermerà che ho risolto bene il mio dubbio gli sarò grato.

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.