실행 중인 스크립트에서 표준 출력 리디렉션

실행 중인 스크립트에서 표준 출력 리디렉션

C에서는 프로그램이 실행되는 동안 stdout을 특정 위치로 리디렉션할 수 있습니다. 예를 들면 다음과 같습니다.

int fd = open("some_file", O_RDWR);
dup2(fd, STDOUT_FILENO);
printf("write to some_file\n");

./script.sh > some_filebash 스크립트()를 실행할 때 stdout을 리디렉션 하지 않고 bash에서 이를 달성할 수 있습니까 ?

답변1

당신은 그것을 사용할 수 있습니다리디렉션복합 명령을 포함한 모든 명령 주변. 예를 들어:

some_function () {
  echo "This also $1 to the file"
}

{
  echo "This goes to the file"
  some_function "goes"
} >some_file
echo "This does not go to the file"
some_function "does not go"

다음 명령을 호출하여 영구 리디렉션을 수행할 수 있습니다(스크립트가 끝나거나 다른 리디렉션으로 덮어쓰기될 때까지).exec내장리디렉션은 있지만 명령은 없습니다. 예를 들어:

foo () {
  echo "This does not go to the file"
  exec >some_file
  echo "This goes to the file"
}
foo
echo "This still goes to the file"

이러한 기능은 bash를 포함한 모든 Bourne/POSIX 스타일 쉘에서 사용할 수 있습니다.

관련 정보