명령줄에서 파일 내용 전달

명령줄에서 파일 내용 전달

명령줄에서 인수(파일의 내용)를 cpp 함수에 대한 인수로 보내는 방법을 알아내려고 합니다. 표준 입력을 통해 보내고 싶지 않습니다.

foo.cpp라는 함수가 있습니다.

  $ cat foo.cpp
  #include <iostream>
  int main (int argc, char *argv[]) {
      for (int i = 1; i < argc; i++)
          std::cout << argv[i] << std::endl;
      return 0;
  }
  $ g++ -o foo foo.cpp
  $ ./foo hello world
  hello
  world

실행된 마지막 명령에서 "hello world" 매개변수를 프로그램에 전달했습니다. 하지만 내 파일에 "hello world"가 있으면 어떻게 되나요? 예를 들어:

 $ cat footest.args
 $ hello world

위에서 설명한 대로 footest.args의 내용을 ./foo에 어떻게 전달합니까? 나는 노력했다

  ./foo | cat footest.args

하지만 작동하지 않는 것 같습니다. 내가 뭘 잘못했나요?

답변1

명령의 출력을 가져와서 매개변수로 변환하려고 합니다. 명령 대체를 시도하십시오.

./foo $(< footest.args)

답변2

다음을 통해 원하는 것을 달성할 수 있습니다.

cat footest.arg | xargs ./foo

또는 (@glenn에게 감사드립니다)

xargs ./foo < footest.arg

불필요한 사용을 피하십시오 cat.

관련 정보