Como usar múltiplas variáveis para entrada com comando de leitura?

2

Estou usando o GNU bash - versão 4.2.10 (1). Eu quero ler várias variáveis usando o comando single read no shell script. Então eu tentei como abaixo:

echo " Enter P N R : "
read P N R

mas não está funcionando. Apenas pede um único valor da variável P e retorna o prompt. Eu pesquisei, mas não encontrei nenhuma solução.

    
por Dip 30.07.2018 / 09:26

1 resposta

3

read , sem -r espera que as palavras na entrada sejam delimitadas pelos caracteres do parâmetro $IFS especial (por padrão SPC, TAB e NL, embora como read lê apenas uma linha, a menos que termine em barra invertida, NL não pode contar) onde barra invertida pode ser usada para escapar do separador ou permitir que uma linha seja continuada na próxima linha física (sequências de linha invertida-nova linha removidas).

Então, aqui o usuário deve inserir os valores para P, N, R ou tab separados, como:

value_for_P value_for_N value_for_R

Ou se os valores puderem conter espaço:

value\ for\ P value\ for\ N value for R

(aqui nós não nos incomodamos em escapar dos espaços para R, já que o resto da linha depois da terceira palavra acabaria em R de qualquer maneira; o usuário ainda precisaria escapar de um > rastreando espaço).

Se você quiser que o usuário insira os valores em três linhas, precisará de 3% de invocações deread. Em seguida, você deseja que -r evite o processamento de contrabarra e torne o IFS vazio:

IFS= read -r P
IFS= read -r N
IFS= read -r R
    
por 30.07.2018 / 09:36