Executando exe com parâmetros em bash e passando sua saída para outro programa [duplicado]

Sep 01 2020

Tenho que chamar um programa prog1.exe e fornecer argumentos para ele e dar a saída para outro prog2.exe executável em um script bash

prog1 "arguments" | prog2
echo finished

Como posso fazer isso funcionar? Também suponho que o echocomando não será executado antes que prog2 termine o seu trabalho?

EDIT: Quando eu corro

prog1 "argument"
prog2 "example"
prog1 "argument" | prog2

Obtive a saída correta do prog1 - std::cout << "arguments" << std::endle é exibido muito bem no console e também o prog2 está criando arquivos, de example.txtforma que ambos os programas estão funcionando individualmente. Apenas colocá-los juntos prog1 "arguments" | prog2não resolve

Respostas

1 Jason Aug 31 2020 at 23:32

Esta não é realmente uma pergunta bash. Esta é realmente uma questão de C ++. prog2 deve ser lido de stdin como jordanm sugeriu nos comentários. Algo assim será lido de stdin linha por linha:

for (std::string line; std::getline(std::cin, line);) {
        std::cout << line << std::endl;
}

Altere o coutpara fazer o que quiser com ele em cada linha.