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

stdout이는 귀하의 기능이 not 로 인쇄되고 있기 때문입니다 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

관련 정보