Archivi tag: bash

Bash Indirect expansion

Ma che figo !

oggi dovevo fare un programmino per recuperare all’interno di una riga un numero variale di elementi. Mi serviva una cosa “quick and dirty” ed alla fine ho trovato (e non lo sapevo, ma speravo che esistesse) la “indirect expansion” di bash.

in soldoni ecco il programmino:

#!/bin/bash
while IFS="," read f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15
do
for index in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
do
findex="f$index"
if [ "${!findex}" != "" ]
then
echo ${!findex}
fi
done
done<estrazione.txt

Notate il ! davanti findex: indica di espandere la variabile come una variabile preesistente, non come una nuova variabile:

Funzione fondamentale nei cicli for dove cicli su una numero notevole di variabili !!