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