Suponho que você tenha definido IFS
para ,
para analisar o CSV. Pelo menos quando faço isso, recebo a mesma mensagem de erro:
IFS=,
FIELDS="NAME PRETTY_NAME DESC"
while read $FIELDS; do
echo $NAME
done < some.csv
Isso porque o shell analisa read $FIELDS
usando $IFS
, portanto, ele procura ,
para separar os argumentos; assim, NAME PRETTY_NAME DESC
acaba sendo interpretado como um único argumento em vez de três, e o resultado é um nome de identificador inválido.
Usar uma matriz conforme sugerido por GMaster funciona neste caso:
IFS=,
FIELDS=(NAME PRETTY_NAME DESC)
while read ${FIELDS[@]}; do
echo $NAME
done < some.csv