por que a variável REPLY em leitura embutida pula o espaço em branco?

2
echo "     a" | while read; do echo "$REPLY"; done

irá imprimir "..... a", que contém espaços em branco iniciais. No entanto,

echo "     a" | while read line; do echo "$line"; done

emitirá "a" com o espaço em branco inicial ignorado (OK, porque a divisão de palavras).

Parece que a variável REPLY tem o mesmo efeito do IFS definido como null:

echo "     a" | while IFS= read line; do echo "$line"; done

No manual bash, não consigo encontrar o motivo. Você tem alguma ideia? Obrigado.

    
por user315311 11.10.2018 / 12:33

1 resposta

1

De read página de manual :

Read one line from the standard input, (or from a file) and assign the word(s) to variable name(s).

If no names are supplied, the line read is assigned to the variable REPLY.

Portanto, $REPLY é sempre toda a linha , enquanto as variáveis atribuídas são sempre palavras . Não funcionaria de outro modo, e. se você tiver várias palavras, o que seria $REPLY ?

    
por 11.10.2018 / 12:50

Tags