Estou usando o GNU bash - versão 4.2.10(1). Eu quero ler várias variáveis usando o comando de leitura único no script de shell. Então eu tentei como abaixo:
echo " Enter P N R : "
read P N R
mas não está funcionando. Ele apenas pede um valor único da variável P e retorna o prompt. Eu pesquisei mas não encontrei nenhuma solução.
read
, sem-r
espera que as palavras na entrada sejam delimitadas pelos caracteres do$IFS
parâmetro especial (por padrão SPC, TAB e NL, embora comoread
lê apenas uma linha a menos que termine em barra invertida, NL não pode contar) onde a barra invertida pode ser usada para escapar o separador ou permitir que uma linha continue na próxima linha física (sequências de barra invertida-nova linha removidas).Então, aqui o usuário deve inserir os valores para P, N, R espaço ou tabulação separados, como:
Ou se os valores podem conter espaço:
(aqui não nos preocupamos em escapar dos espaços para R, pois o resto da linha após a terceira palavra terminaria em R de qualquer maneira; o usuário ainda precisaria escapar de um espaço à direita ).
Se você quiser que o usuário insira os valores em 3 linhas, você precisará de 3
read
invocações. Você deseja-r
evitar o processamento da barra invertida e tornar o IFS vazio: