Bash - 리디렉션된 문자열이 출력에 표시되지 않음

Bash - 리디렉션된 문자열이 출력에 표시되지 않음

저는 C++ 프로그램(+100개 프로그램)의 컴파일과 실행을 자동화하고 있는데, 그 중 일부는 사용자 상호 작용이 필요합니다.

다음은 사용자가 문자열을 삽입하도록 요구하는 C++ 프로그램의 예입니다.

#include <iostream>
#include <string>
using namespace std;

int main ()
{
    string name;

    cout << "Enter your name: ";
    cin >> name;

    cout << "your name is: " << name << endl;

    return 0;
}

여기서 필요한 것은 이를 컴파일하고 실행한 후 프로그램의 출력을 다른 파일로 리디렉션하는 것입니다.

g++ -std=c++11 -o practice practice.cpp

입력 삽입을 자동화하기 위해 다음과 같이 프로그램을 실행합니다.

./practice <<< $(echo "Brian") >> result.txt

문자열을 프로그램의 STDIN으로 리디렉션하는 방법이 있다는 것을 알고 있습니다.

echo "Brian" | ./practice >> result.txt

그러나 모두 다음과 같은 출력을 생성합니다.

Enter your name: your name is: Brian

내가 원하는 것은 다음 출력을 보는 것입니다.

Enter your name: Brian
your name is: Brian

라인 프로그램이 사용자 상호 작용을 요구한 바로 뒤에 리디렉션된 문자열이 파일 출력에 나타나기를 원합니다.
어떤 제안이 있으십니까?

답변1

이렇게 해보시겠어요?

cout << "Enter your name: ";
cin >> name;
cout << name << endl;

cout << "your name is: " << name << endl;

컴파일한 후의 모습은 다음과 같습니다.

$ echo "foo" | ./a.out 
Enter your name: foo
your name is: foo

노트:
저는 오랫동안 C++를 사용하지 않았습니다!

관련 정보