Você pode estruturar isso como uma cadeia if / else. É possível (embora difícil de controlar) usar begin / end para colocar uma instrução composta como uma condição if:
if begin ; tmux has-session -t remote; and tmux attach-session -t remote; end
# We're attached!
else if begin; tmux new-session -s remote; and kill %self; end
# We created a new session
else
echo "tmux failed to start; using plain fish shell"
end
Um estilo mais agradável é modificadores booleanos. começo / fim ocupam o lugar dos parênteses:
begin
tmux has-session -t remote
and tmux attach-session -t remote
end
or begin
tmux new-session -s remote
and kill %self
end
or echo "tmux failed to start; using plain fish shell"
(O primeiro começo / fim não é estritamente necessário, mas melhora a clareza da IMO.)
O fatorar funções é uma terceira possibilidade:
function tmux_attach
tmux has-session -t remote
and tmux attach-session -t remote
end
function tmux_new_session
tmux new-session -s remote
and kill %self
end
tmux_attach
or tmux_new_session
or echo "tmux failed to start; using plain fish shell"