명령줄에서 인수(파일의 내용)를 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
.