Bash 스크립트 함수 출력 /dev/null

Bash 스크립트 함수 출력 /dev/null

tmux 세션이 실행 중인지 확인하기 위해 bash 기능을 개발 중입니다. 기능은 작동하지만 실행 중인 세션이 없으면 "서버에 연결할 수 없습니다"가 출력됩니다. 모든 함수 호출에 1>&2를 추가하지 않고 해당 오류를 null로 인쇄하려면 어떻게 해야 합니까?

tmux_checker()
{
    if [ -z $(tmux ls  | grep -o servercontrol) ]
    then
        tmux new -d -s servercontrol
    fi
}

tmux_checker #> /dev/null 2>&1 or 1>&2

답변1

함수 자체의 출력을 리디렉션합니다.

tmux_checker()
{
    if [ -z $(tmux ls 2>/dev/null | grep -o servercontrol) ]
    then
        tmux new -d -s servercontrol
    fi
}

tmux_checker

답변2

기존 tmux세션을 테스트하려면(또는 존재하지 않는 경우 백그라운드에서 새 세션을 시작하려면) 다음을 사용하십시오.

if ! tmux has-session 2>/dev/null; then
    tmux new-session -d
fi

특정 이름의 세션을 확인하려면:

if ! tmux has-session -t name 2>/dev/null; then
    tmux new-session -d -s name
fi

쉘 함수로서:

start_tmux () {
    set -- "${1:-servercontrol}"

    if ! tmux has-session -t "$1" 2>/dev/null; then
        tmux new-session -d -s "$1"
    fi
}

이것은 다음과 같이 사용될 수 있습니다.

$ start_tmux

또는

$ start_tmux mysession

관련 정보