Saída da função de script Bash / dev / null

3

Estou trabalhando em uma função bash para verificar se uma sessão tmux está sendo executada. A função funciona, mas, se nenhuma sessão estiver em execução, a saída "falhou ao conectar-se ao servidor". Como faço para produzir esse erro para null sem acrescentar 1 > & 2 a todas as chamadas de função?

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
    
por fuzzyfreak 20.04.2017 / 10:13

2 respostas

3

Redirecionar a saída na própria função:

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

tmux_checker
    
por 20.04.2017 / 10:16
2

Para testar uma sessão tmux existente (e iniciar uma nova em segundo plano, se nenhuma existir), use

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

Para verificar uma sessão com um nome específico:

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

Como uma função shell:

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

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

Isso pode ser usado como

$ start_tmux

ou

$ start_tmux mysession
    
por 20.04.2017 / 10:28