我正在开发一个 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