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

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

Bash 스크립트에서는 명령 출력을 변수로 리디렉션하는 동시에 버퍼링되지 않은 출력을 터미널로 스트리밍해야 합니다.

나는 이것을 시도했습니다 :

output=$(command 2>&1 | tee "$(tty)")

그러나 이것은 터미널에 아무것도 출력하지 않습니다.

나도 시도했다

mytty=$(tty)
output=$(command 2>&1 | tee $mytty)

이로 인해 "tee:/dev/tty1: 권한이 거부되었습니다"라는 오류가 발생했습니다.

현재 운영 체제는 OpenSUSE 15.0이고 sudo/root 권한이 없습니다.

답변1

노력하다

... | tee /dev/tty

좋다:

output=$( command 2>&1 | tee /dev/tty )

이 명령은 tty파이프라인 내에서 작동하지 않습니다.

$ echo $(tty)           # or (a lot better) simply:  tty
/dev/pts/4

$ echo aa | echo $(tty)
not a tty

이는 파이프의 오른쪽이 tty에 연결되어 있지 않음을 의미합니다.

관련 정보