Arrays
Bash ha anche gli arrays; ecco oggi li ripasso perché ho scoperto che è proprio quello che mi serve.
Creare un array e usarlo è semplice, si può fare con declare e poi usare, così (a0):
declare -a arr arr=("alfa", "beta", "g a m m a" "delta") echo -e "\nprint dell'array" echo "${arr[@]}" echo -e '\nprint un elemento per riga' for ele in "${arr[@]}"; do echo $ele done larr="${#arr[@]}" echo -e "\nlunghezza dell'array" $larr
$ bash a0
print dell'array
alfa, beta, g a m m a delta
print un elemento per riga
alfa,
beta,
g a m m a
delta
lunghezza dell'array 4
$
OK! Ah: arrays can be sparse so you shouldn't use the length to get the last element. Here's how you can in Bash 4.2 and later (a1):
#declare -a arr arr=("alfa", "beta", "g a m m a" "delta") arr[5]='epsilon' unset "arr[2]" echo 'array:' "${arr[@]}" uarr="${arr[-1]}" echo -e "\nultimo elemento" $uarr echo -e '\nelemento n. 3:' "${arr[3]}" echo -e '\n3 caratteri elemento n. 3:' "${arr[3]:0:3}" echo -e '\nultimo elemento,\n5 caratteri a partire dal 2:' "${arr[-1]: 2:5}"
$ bash a1
array: alfa, beta, delta epsilon
ultimo elemento epsilon
elemento n. 3: delta
3 caratteri elemento n. 3: del
ultimo elemento,
5 caratteri a partire dal 2: silon
$
pare che declare non serva; unset funziona ma poi l'array diventa sparso e non posso più fare affidamento sull'indice, neanche se opero su una copia, affidarsi al ciclo come nel primo script.
Non ne parlo ma c'è anche l'array associativo, dichiarato così:
declare -A name.
🔴🔵
Nessun commento:
Posta un commento