차례로 실행하고 싶은 프로그램이 6개 정도 있습니다. 이들은 모두 서로 다른 디렉토리에 있으며 자체 데이터를 가지고 있습니다. 각 프로그램을 특정 순서로 실행하는 데 사용할 수 있는 스크립트에 대한 도움이 필요합니다.
이전 실행의 출력이 다음 실행의 입력이 되기 때문입니다.
답변1
프로그램을 "체인"하는 방법에는 두 가지가 있습니다. 첫 번째 출력이 두 번째 출력으로 전달되도록 이들을 함께 연결하려는 경우 파이프라는 것을 사용해야 합니다. 또 다른 방법은 단순히 프로그램을 하나씩 실행하는 것입니다.
파이프라인 예시
여기서는 첫 번째 명령의 출력을 가져와 |
두 번째 명령으로 파이프( )합니다.
$ echo "output from 1" | grep 1
output from 1
명령의 출력이 화면에 표시됩니다 grep
.
시리즈 명령 예
여기서는 하나의 명령을 실행한 다음 다른 명령을 실행합니다.
예
#!/bin/bash
echo 1
echo 2
위의 내용을 이라는 파일에 넣고 mycmds.bash
실행 가능하게 만든 후 실행합니다.
$ chmod +x mycmds.bash
$ ./mycmds.bash
1
2
당신은 또한 사용할 수 있습니다서브쉘원하는 경우 프롬프트에서 일련의 명령을 실행하고 해당 출력을 파일에 캡처할 수 있습니다. 위의 쉘 스크립트 방법과 동일한 방식으로 명령이 실행됩니다.
예
명령을 실행하면 됩니다.
$ (echo 1; echo 2; echo 3)
1
2
3
그들의 결과물을 포착하라
$ (echo 1; echo 2; echo 3) | grep 3
3
출력을 파일로 캡처
$ (echo 1; echo 2; echo 3) | tee mycmds.log
1
2
3
$ cat mycmds.log
1
2
3
답변2
첫 번째 줄에 첫 번째 프로그램을 작성합니다.
두 번째 줄에 두 번째 프로그램을 작성합니다.
당신은 그것을 반복합니다.
답변3
귀하의 질문은 이해하기 어렵습니다. 를 찾습니까관로?
당신이 쓴다면
program1 --option1 | program2 --option2
그러면 명령의 출력이 program1 --option1
명령에 대한 입력으로 사용됩니다 program2 --option2
.
이 방법으로 두 개 이상의 프로그램을 연결할 수 있습니다. 줄이 너무 길면 각 파이프 기호 뒤에 개행 문자를 추가할 수 있습니다.
pre-treatment file1.input file2.input file3.input |
some-processing --option=value --other-option |
more-processing |
analyze this --and that |
grep 'interesting stuff'
바라보다STDOUT과 STDIN을 연결한다는 것은 무엇을 의미합니까?파이프 비유에 대한 직관적인 설명.