stdout 및 / 또는 stderr을 변수의 경로로 리디렉션

Willman

stdout 및 / 또는 stderr를 변수에 지정한 경로로 리디렉션하려면 어떻게해야합니까? 참고 : 변수 자체 를 덮어 쓰고 싶지 않고 변수에 지정된 파일에 std [xxx] 쓰기를 만들고 싶습니다.

예를 들어, scp명령이 실패하면 실패 메시지를 stderr또는 stdout(실패 할 때 출력하는 것이 확실하지 않음) 대신에 지정된 로그 파일로 출력 하는 간단한 스크립트입니다 . 로그 파일의 경로는 다음 $LOG변수에 저장됩니다 .

LOG=/path/to/file.log
scp file1 host@remote

# do 'whatever' if scp command succeeds:
if [ $? = 0 ];
then
    whatever
else
    # else log both stdout/stderr to ${LOG} file
    &>"${LOG}"
    # DEBUG - print contents of ${LOG} var for testing purposes
    printf "${LOG}"

이 스크립트의 결과는 아무것도 표시되지 않습니다 /path/to/file.log파일과 간단한 인쇄 /path/to/file.log에를 stdout. 따라서 &>.

이미 특정 scp명령이 작동하는지 확인 했으므로 잠재적 인 문제가 아니라는 것을 알고 있습니다.

아니면 이것이 사용자 지정 로그 파일을 처리하는 가장 적절한 방법일까요? 로그 파일 경로를 변수에 저장하는 것보다 자체 로깅 시스템을 구성하는 더 좋은 방법이 있습니까?

...마다

명령을 실행 한 후 출력을 기록하려고 시도하는 것 같습니다 . 이는 불가능합니다.

scp명령 의 출력을 무조건 기록 하려면 명령 자체와 같은 줄에 리디렉션 연산자를 포함하면됩니다. 즉,

&>"${LOG}" scp file1 host@remote

명령이 실패한 경우에만 로그 출력을 저장하려는 경우 (코드에서 수행하려는 것처럼 표시됨) 출력을 임시 파일로 리디렉션 한 다음 나중에 원하는 위치로 파일을 이동하는 것은 어떻습니까? 다음과 같이 보일 수 있습니다.

#!/bin/bash

# Set path the real log file location
LOG=/path/to/file.log

# Create a temporary file to capture standard output and standard error
TEMPLOG="$(mktemp)"

# Run command and redirect output to temporary logfile
2>"${TEMPLOG}" scp file1 host@remote

# do 'whatever' if scp command succeeds:
if [ $? = 0 ];
then
    echo 'Command successful!'

# else log both stdout/stderr to ${LOG} file
else
    # Move the log file from the temporary location to the desired location
    mv "${TEMPLOG}" "${LOG}"

    # DEBUG - print contents of ${LOG} var for testing purposes
    printf "${LOG}"
fi

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

STDOUT 및 STDERR 리디렉션을 동적으로 변경

분류에서Dev

stdout 및 stderr을 파일로, stderr을 stdout으로 리디렉션

분류에서Dev

stdout을 tcsh의 stderr로 리디렉션

분류에서Dev

stderr 및 stdout의 일부를 / dev / null로 리디렉션하는 방법

분류에서Dev

stderr 및 stdout을 동일한 파일로 리디렉션하는 방법

분류에서Dev

종료 코드를 변경하지 않고 stdout 및 stderr을 다른 프로그램으로 리디렉션

분류에서Dev

Bash : 명령 출력을 STDOUT 및 변수로 리디렉션

분류에서Dev

터미널에서 stdout 및 stderr을 systemd의 저널로 리디렉션하는 프로그램을 실행하는 방법은 무엇입니까?

분류에서Dev

stdout을 stderr로 리디렉션하는 방법

분류에서Dev

리디렉션하는 것을 잊었을 때 GNU 화면에서 실행되는 프로그램의 stdout 및 stderr를 저장하십시오.

분류에서Dev

stdout과 stderr을 함께 리디렉션 VS stdout을 리디렉션 한 다음 stderr을 stdout의 파일로 리디렉션

분류에서Dev

변형으로 stdout 및 stderr을 리디렉션하려면 어떻게해야합니까?

분류에서Dev

stdout 및 stderr를 파일로 리디렉션하는 POSIX 호환 방법

분류에서Dev

변수를 사용한 Stdout 및 Stderr 리디렉션

분류에서Dev

STDERR을 파일과 콘솔로 리디렉션하고 STDOUT을 파일로만 리디렉션하는 방법

분류에서Dev

Bash는 stdout을 함수로 리디렉션

분류에서Dev

stdout 및 stderr를 다른 파일로 리디렉션

분류에서Dev

stdout / stderr을 로그 파일로 리디렉션 할 수 없습니다.

분류에서Dev

Python의 하위 프로세스 / Popen에서 stdout을 stderr로 리디렉션

분류에서Dev

스크립트 stderr 및 stdout을 파일로 리디렉션하지만 stdout도 tty로 유지합니까?

분류에서Dev

stdout 및 stderr을 리디렉션하면 여전히 stdout으로 인쇄됩니다.

분류에서Dev

Linux : stdout 및 stderr를 로거로 리디렉션하는 방법은 무엇입니까?

분류에서Dev

특정 줄의 stdout 및 stderr 리디렉션

분류에서Dev

시스템 명령을 사용하여 stdout 및 stderr 출력을 파일로 리디렉션하는 것이 Perl에서 작동하지 않습니다.

분류에서Dev

Windows 배관시 STDERR 및 STDOUT을 동일한 프로그램으로 리디렉션

분류에서Dev

명령이 변수로 전달 될 때 명령 대체와 함께 stdout / stderr 리디렉션을 포함하는 방법은 무엇입니까?

분류에서Dev

stderr 및 stdout을 다른 파일로 리디렉션하고 터미널에 표시하는 방법은 무엇입니까?

분류에서Dev

stdout 및 stderr을 파일 설명자 복사본없이 동일한 파일로 리디렉션하는 것이 안전합니까?

분류에서Dev

stdout 및 stderr을 파일 설명자 복사본없이 동일한 파일로 리디렉션하는 것이 안전합니까?

Related 관련 기사

  1. 1

    STDOUT 및 STDERR 리디렉션을 동적으로 변경

  2. 2

    stdout 및 stderr을 파일로, stderr을 stdout으로 리디렉션

  3. 3

    stdout을 tcsh의 stderr로 리디렉션

  4. 4

    stderr 및 stdout의 일부를 / dev / null로 리디렉션하는 방법

  5. 5

    stderr 및 stdout을 동일한 파일로 리디렉션하는 방법

  6. 6

    종료 코드를 변경하지 않고 stdout 및 stderr을 다른 프로그램으로 리디렉션

  7. 7

    Bash : 명령 출력을 STDOUT 및 변수로 리디렉션

  8. 8

    터미널에서 stdout 및 stderr을 systemd의 저널로 리디렉션하는 프로그램을 실행하는 방법은 무엇입니까?

  9. 9

    stdout을 stderr로 리디렉션하는 방법

  10. 10

    리디렉션하는 것을 잊었을 때 GNU 화면에서 실행되는 프로그램의 stdout 및 stderr를 저장하십시오.

  11. 11

    stdout과 stderr을 함께 리디렉션 VS stdout을 리디렉션 한 다음 stderr을 stdout의 파일로 리디렉션

  12. 12

    변형으로 stdout 및 stderr을 리디렉션하려면 어떻게해야합니까?

  13. 13

    stdout 및 stderr를 파일로 리디렉션하는 POSIX 호환 방법

  14. 14

    변수를 사용한 Stdout 및 Stderr 리디렉션

  15. 15

    STDERR을 파일과 콘솔로 리디렉션하고 STDOUT을 파일로만 리디렉션하는 방법

  16. 16

    Bash는 stdout을 함수로 리디렉션

  17. 17

    stdout 및 stderr를 다른 파일로 리디렉션

  18. 18

    stdout / stderr을 로그 파일로 리디렉션 할 수 없습니다.

  19. 19

    Python의 하위 프로세스 / Popen에서 stdout을 stderr로 리디렉션

  20. 20

    스크립트 stderr 및 stdout을 파일로 리디렉션하지만 stdout도 tty로 유지합니까?

  21. 21

    stdout 및 stderr을 리디렉션하면 여전히 stdout으로 인쇄됩니다.

  22. 22

    Linux : stdout 및 stderr를 로거로 리디렉션하는 방법은 무엇입니까?

  23. 23

    특정 줄의 stdout 및 stderr 리디렉션

  24. 24

    시스템 명령을 사용하여 stdout 및 stderr 출력을 파일로 리디렉션하는 것이 Perl에서 작동하지 않습니다.

  25. 25

    Windows 배관시 STDERR 및 STDOUT을 동일한 프로그램으로 리디렉션

  26. 26

    명령이 변수로 전달 될 때 명령 대체와 함께 stdout / stderr 리디렉션을 포함하는 방법은 무엇입니까?

  27. 27

    stderr 및 stdout을 다른 파일로 리디렉션하고 터미널에 표시하는 방법은 무엇입니까?

  28. 28

    stdout 및 stderr을 파일 설명자 복사본없이 동일한 파일로 리디렉션하는 것이 안전합니까?

  29. 29

    stdout 및 stderr을 파일 설명자 복사본없이 동일한 파일로 리디렉션하는 것이 안전합니까?

뜨겁다태그

보관