O seu loop while parece, como Barmar aponta em seu comentário à pergunta, como se fosse originalmente um loop for iterado sobre $coord
(uma variável possivelmente contendo todo o conteúdo de um arquivo).
O loop while correto pode ser parecido com
while read -r L1Aname north south east west; do
Nlat="$north"
Slat="$south"
Elon="$east"
Wlon="$west"
done <"$coord"
Também deixei cair o $
em $L1Aname
. Eu não tenho certeza se isso está correto, já que você poderia read $L1Aname
(isso iria ler um valor na variável cujo nome é armazenado na variável L1Aname
) . Vou assumir que isso não foi intencional (apenas mude L1Aname
para $L1Aname
abaixo se eu estiver errado).
Se você precisar verificar valores não vazios, não teste na string "$L1Aname north south east west"
, pois isso é garantido como não vazio. Em vez disso, teste os valores das variáveis individuais:
while read -r L1Aname north south east west
&& [ -n "$north" ] && [ -n "$south" ]
&& [ -n "$east" ] && [ -n "$west" ]
do
Nlat="$north"
Slat="$south"
Elon="$east"
Wlon="$west"
# use "$Nlat", "$Slat", "$Elon" and "$Wlon" here.
done <"$coord"
Você não precisa testar em $L1Aname
, pois isso é garantido que contém algo se o read
conseguir ler algo.