함수의 표준 출력 및 오류

함수의 표준 출력 및 오류

Bash 스크립트 내부의 함수에서 표준 출력 및 estandard 오류를 얻는 방법이 있습니까? 이것이 제가 스크립트를 통해 달성하려고 "생각한" 것입니다.

#!/bin/bash

LOGS="tmp/sync.log"

function1()
{
echo " "
echo "beginning function 1"
echo " "
for-loop-that-will-run-a-command
}

function2()
{
echo " "
echo "beginning function 2"
echo " "
for-loop-that-will-run-a-command
}

function1 2>&1 "$LOGS" &&
function2 2>&1 "$LOGS" ||

cat "$LOGS" | mailx -s "Here are the logs" [email protected]

하지만 아무것도 얻지 못합니다. 이를 달성하는 가장 효율적이고 우아한 방법은 무엇입니까?

답변1

으로 아무것도 리디렉션하지 않고 $LOGS로만 리디렉션 stderr합니다 stdout. 따라서 파일을 덮어쓰려면 올바른 리디렉션은 다음과 같아야 합니다 $LOGS.

function1 > "$LOGS"  2>&1 &&
function2 >> "$LOGS"  2>&1 ||

또는 를 사용하면서 bash다음과 같은 명령을 사용할 수도 있습니다.

function1 &> "$LOGS" &&
function2 &>> "$LOGS" ||

관련 정보