Bash 脚本函数输出 /dev/null

Bash 脚本函数输出 /dev/null

我正在开发一个 bash 函数来检查 tmux 会话是否正在运行。该功能有效,但如果没有会话正在运行,则会输出“无法连接到服务器”。如何将该错误输出为 null,而不将 1>&2 附加到每个函数调用?

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

相关内容