bash: 접미사 없이 IO 리디렉션

bash: 접미사 없이 IO 리디렉션

일반적으로 를 사용 XX 2>error.log하지만 디버깅 목적으로 다음 구문을 선호합니다.

function XX()
{
    redirect_io_to "error.log"
}

그러한 구문을 사용할 수 있습니까?

일부 단축키를 사용하여 줄에 주석을 달거나 주석 처리를 취소하도록 VIM을 설정하고 쉽게 주석을 달거나 주석 처리를 해제할 수 있기 때문에 편리합니다.

답변1

응, 하지만 별로 예쁘지는 않아.

파일로 exec 2> error.log보낼 수 있습니다stderr

문제는 이제 정리하고 복원해야 stderr하기 때문에 함수 하단에서 해야 하기 때문에 다시 터미널로 돌아가게 exec 2>&1만든다는 것입니다 .stderr

function XX()
{
    exec 2> error.log
    foo bar
    exec 2>&1
}

exec 2>&1계속해서 사용해도 문제가 되지 않으므로 첫 번째 항목에 대해 주석을 달고 주석을 제거하면 됩니다 exec.


또는 리디렉션이 자동으로 지워지도록 전체 함수를 서브셸에서 실행하도록 할 수 있습니다(아래 예의 대괄호는 서브셸을 시작합니다).

function XX()
{ (
    exec 2> error.log
    foo bar
) }

마지막으로, 쉽게 주석을 달거나 주석을 제거할 수 있는 별칭 정의를 만들어 함수 선언 앞에 배치할 수 있습니다.

alias XX='XX 2> error.log'
function XX()
{
    foo bar
}

답변2

아니요, 하지만 언제든지 원하는 모든 것을 블록에 쌓을 수 있습니다.

function XX() {
 (
  some
  commands
  here
 ) 2>error.log
}

관련 정보