Enquanto lê a linha -r, não pode acessar a linha $ dentro de um if dentro desse loop while [duplicado]

0

Eu estava tentando ler um arquivo linha por linha (cada linha é um nome de host), fazer algum processamento como este:

while read -r line
do 
  if ping -c1 $line
     echo $line is running  
  fi 
done <file.txt 

Eu descobri que a saída é assim:

  is running
  is running 
  ...

Como se a variável $line estivesse vazia.

Obrigado a todos que comentaram esta questão. Acho que agora entendo o que aconteceu.

Assim, o arquivo termina com a linha CRLF. E o comprimento de uma linha é exatamente o mesmo que is running .

Por causa do caractere CR no final de $line , o conteúdo de $line é totalmente substituído por is running . Se apenas o comprimento de uma linha for maior, eu teria feito a pergunta de maneira diferente.

    
por David Dai 08.06.2018 / 08:52

0 respostas

Tags