Bash capturando asterisco dentro de um arquivo [duplicado]

1

Eu tenho um arquivo de texto que contém um asterisco como o primeiro caractere em cada linha, quando tento processar o arquivo em um script como este:

while read line; do
  out=$(echo $line | awk '{ print $3 }')
  echo $out
done < file_with_asterisks

Ele está imprimindo os arquivos no diretório de trabalho atual, não na terceira coluna como eu quero.

Remover o asterisco resolve o problema, então descobri que ele estava fazendo globbing.

Como faço para que o bash tome o asterisco como texto e não como curinga?

    
por loki 04.05.2016 / 07:40

1 resposta

2

Você deve colocar aspas em torno de suas variáveis:

while IFS= read -r line; do
  out=$(echo "$line" | awk '{ print $3 }')
  echo "$out"
done < file_with_asterisks

No seu caso, o echo $line se expande (suponho que um espaço siga os asteriscos iniciais em cada linha)

    
por 04.05.2016 / 07:44