쉘 스크립트의 출력을 변수에 저장

쉘 스크립트의 출력을 변수에 저장

이 주제에 관해 많은 스레드를 읽었지만 어떤 솔루션도 나에게 도움이 되지 않았습니다.

나는 다음을 수행하려고합니다 :

RELEASE_COMMAND_OUTPUT=$(exec ~/temp/execs/github-release release --user patick --repo $REPO_NAME --tag $RELEASE_VERSION --name $RELEASE_VERSION --description "$DESC")

그러나 출력은 변수 ./github-release에 저장되지 않습니다 RELEASE_COMMAND_OUTPUT.

나는 그 개념을 안다.명령 대체, 그러나 내가 시도한 솔루션 중 어느 것도 효과가 없었습니다. 내가 뭘 잘못했나요?

답변1

귀하의 질문에 대한 설명에서 설명했듯이 변수 RELEASE_COMMAND_OUTPUTSTDOUT(표준 출력)당신의 명령은 아니지만STDERR (표준 에러), 이것이 당신의 경우인 것 같습니다.

명령의 출력이 의심스러운 경우 다음을 사용할 수 있습니다.프로세스 교체도착하다STDERR빨간색 으로 표시해 둬다음 예에 표시된 대로:

command 2> >(while read line; do echo -e "\e[01;31m$line\e[0m" >&2; done)

이것은리디렉션( 2>부분) 블록에 대한 입력으로 STDERR터미널에 빨간색으로 인쇄됩니다.commandwhile

반대로 수행하여 STDOUT빨간색으로 표시할 수도 있습니다.

command | grep .

grep은 다음에서만 작동하기 때문에STDOUT

노트: 일부 시스템에서는 필요할 수 있습니다.색상 활성화grep 에서 플래그를 사용하십시오 --color=auto. Macos 및 Linux에서는 일반적으로 기본적으로 활성화되어 있습니다.

관련 정보