Erro de sintaxe no loop while próximo do token inesperado 'in'

0

Eu quero processar alguns dados e preciso restringir a área ao processo lendo algumas coordenadas escritas em um arquivo de texto, ..

Eu tenho o seguinte erro:

./script5.sh: line 59: syntax error near unexpected token in ' ./script5.sh: linha 59: while IFS="" read -r $L1Aname north south east west || [[ -n "$L1Aname north south east west" ]] in $coord; do'

Isso é o que eu tenho:

while IFS="" read -r $L1Aname north south east west || [[ -n "$L1Aname north south east west" ]] in $coord; do
    Nlat="$north"  #name variable north
    Slat="$south"  #name variable south
    Elon="$east"  #name variable east
    Wlon="$west" #name variable west
done < "$coord"; 

Obrigado!

    
por dia.duran 06.06.2017 / 00:09

1 resposta

1

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.

    
por 07.06.2017 / 05:58

Tags