Você pode obter respostas melhores se explicar o contexto para por que awk
... e como é a primeira linha de dados.
Como você não alterou o separador de campo, suponho que esteja processando uma linha de itens separados por espaços. O seguinte fará exatamente o que você está procurando:
arr_values=()
read -ra arr_values <<< $(head -n 1 file.txt)
for s in "${arr_values[@]}"; do
echo "$s"
done
Todo o trabalho é feito no comando read
. A menos que você tenha a necessidade de processar os valores em uma matriz várias vezes; então, você poderia simplesmente fazer:
set -f # disable globbing, in case the lines contain wildcard characters
for s in $(head -n 1 file.txt); do
set +f
echo "$s"
done
set +f
Isso colocará cada entrada de campo não vazia separada por espaços em branco em $s
e fará uma passagem pelo loop.