Como enviar múltiplos comandos como entrada em um programa?

3

Eu sei como enviar um comando como entrada em um programa como este:

echo toto | ./my_prog

E com substituição de processo + redirecionamento:

r < <(echo toto)

Mas como fazer isso se eu quiser inserir uma segunda ou terceira entrada?

Por exemplo, eu tenho um programa que pergunta primeiro meu nome de usuário e depois disso ele me pergunta outras informações, como um número de telefone ou qualquer outra informação diferente.

    
por sushi 01.03.2018 / 03:31

3 respostas

7

Use { e } para coletar a saída de vários programas. Por exemplo, { echo one; echo two; } |program . Deixe um espaço depois de { e antes de } e certifique-se de que haja um ponto-e-vírgula após o último comando dentro das chaves.

    
por 01.03.2018 / 03:45
9

Eu sugeriria um documento aqui

./my_proc << END_OF_INPUTS
username
phone number
whatever
END_OF_INPUTS
    
por 01.03.2018 / 03:53
0

Você pode usar printf e um pipe também

printf "%s\n" "username" "number phone" "whatever" | ./my_prog
    
por 01.03.2018 / 21:59