R: bash array
>----Messaggio originale----
>Da: piviul@riminilug.it
>Data: 16/11/2011 12.47
>A: "debian-italian"<debian-italian@lists.debian.org>
>Ogg: bash array
>
>Ciao a tutti, non riesco a capire questo strano (almeno per me)
>comportamento della bash:
>> $ echo "uno, due, tre e quattro, cinque" | sed 's/[ ]*\([^,]*\)[^
>> ]*/"\1" /g'
>> "uno" "due" "tre e quattro" "cinque"
>> $ test=($(echo "uno, due, tre e quattro, cinque" | sed 's/[
>> ]*\([^,]*\)[^ ]*/"\1" /g'));
>> $ for i in "${test[@]}"; do echo $i; done;
>> "uno"
>> "due"
>> "tre
>> e
>> quattro"
>> "cinque"
>> $ test=("uno" "due" "tre e quattro" "cinque")
>> $ for i in "${test[@]}"; do echo $i; done;
>> uno
>> due
>> tre e quattro
>> cinque
>Io mi sarei aspettato che inizializzare test con test=("uno" "due" "tre
>e quattro" "cinque") oppure test=($(echo "uno, due, tre e quattro,
>cinque" | sed 's/[ ]*\([^,]*\)[^ ]*/"\1" /g')) fosse la stessa cosa ma
>non sembra essere. Qualcuno mi sa spiegare il motivo?
>
>Grazie
>
>Piviul
>
>
>--
>Per REVOCARE l'iscrizione alla lista, inviare un email a
>debian-italian-REQUEST@lists.debian.org con oggetto "unsubscribe". Per
>problemi inviare un email in INGLESE a listmaster@lists.debian.org
>
>To UNSUBSCRIBE, email to debian-italian-REQUEST@lists.debian.org
>with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
>Archive: [🔎] 4EC3A2C9.1010801@riminilug.it">http://lists.debian.org/[🔎] 4EC3A2C9.1010801@riminilug.it
>
>
test=("uno" "due" "tre e quattro" "cinque")
con questa inizializzazione ogni lo spazio determina il limite di ogni
elemento dell'array; è un'assegnazione diretta
test=($(echo "uno, due, tre e quattro,cinque" | sed 's/[ ]*\([^,]*\)[^ ]*/"\1"
/g'))
con questa invece vai a manipolare direttamente gli spazi e di conseguenza
anche gli elementi dell'array
io proverei un modo diverso, magari assegnando i valori a 5 variabili, fermo
restando che siano sempre cinque
oppure un'assegnazione diretta del tipo
array[i]="uno"
...
array[y]="tre e quattro"
Reply to: