bash에서 함수 출력을 /dev/null로 리디렉션하는 방법

bash에서 함수 출력을 /dev/null로 리디렉션하는 방법

일부 기능이 포함된 스크립트( )가 있고 또 다른 스크립트( ) ~/func/functions.sh가 있습니다 .~/scripts/example.sh

코드: function.sh

 #!/bin/bash
 function NameofFunction()
 {
  # do something...
  echo -e "\e[31m[ ERROR ]\e[39m more text..." 1>&2
  }

코드: example.sh (잘 작동함)

#!/bin/bash

. ~/func/functions.sh
function functioninExample()
{
#do something...
NameofFunction ${VAR1} ${VAR2}

}

functioninExample 2>/dev/null

코드: example.sh (작동하지 않음)

#!/bin/bash

. ~/func/functions.sh
function functioninExample()
{
#do something...
NameofFunction ${VAR1} ${VAR2} 2>/dev/null

}

functioninExample

함수를 편집하지 않고 함수의 에코를 리디렉션하는 방법은 무엇입니까?

NameofFunction ${VAR1} ${VAR2} 2>/dev/null 

작동하지 않습니다.

functioninExample 함수를 리디렉션하지 않고 함수의 에코를 리디렉션하는 방법은 무엇입니까?

답변1

이는 귀하의 기능이 stdoutnot 을 인쇄하고 있기 때문입니다 stderr. 시도해 보십시오.

NameofFunction ${VAR1} ${VAR2} >/dev/null

또는 둘 다 리디렉션stderr 그리고 stdout:

NameofFunction ${VAR1} ${VAR2} >/dev/null 2>&1

에 오류를 인쇄하는 것이 좋은 스타일이므로 stderr위의 답변 대신 함수를 다음과 같이 변경하는 것이 좋습니다.

echo -e "\e[31m[ ERROR ]\e[39m more text..." 1>&2

관련 정보