실행 시 화면에 쉘 스크립트 명령의 텍스트 출력을 가져옵니다.

실행 시 화면에 쉘 스크립트 명령의 텍스트 출력을 가져옵니다.

다음 쉘 스크립트를 고려하십시오.

val=($ls)

ls는 쉘 텍스트 출력을 제공하지 않습니다. 이제 명령을 실행하는 동안 화면에 출력 텍스트를 어떻게 얻을 수 있습니까?

출력을 얻기 위해 val 값을 인쇄할 수 있지만 echo를 사용하는 것은 중요하지 않습니다. 따라서 다음 줄을 사용하는 것은 사실이 아닙니다.

echo $val

즉, 마치 명령을 직접 실행한 것처럼 현재 명령의 출력을 셸에서 동시에 실행하려면 어떻게 해야 할까요?

답변1

다음 명령을 실행하면 쉘이 수행 중인 모든 내용을 에코하도록 할 수 있습니다.

sh -x yourscript

또는 스크립트의 첫 번째 명령으로 추가할 수 있습니다.

set -x

그러나 내용이 좀 너무 길 수도 있습니다. 디버깅에는 괜찮지만 선택적인 출력을 원한다면 echo 명령을 직접 신중하게 배치하는 것이 좋습니다.

답변2

tee표준 출력의 복사본을 파일로 보내도록 명령 할 수 있으며 현재 터미널을 해당 출력 파일로 사용할 수 있습니다. 아래에서 볼 수 있듯이, 출력에 아무 작업도 수행하지 않으면 두 번 인쇄되고, 표준 출력에 작업을 수행하여 삼켜지면 한 번만 인쇄됩니다.

$ echo foo | tee -a "$(tty)"
foo
foo
$ echo foo | tee -a "$(tty)" | grep bar
foo

관련 정보