Test
如何在fish shell中使用布爾值?
我切換到
fish
shell 並且對它非常滿意。我不明白如何處理布爾值。我設法編寫config.fish
了tmux
在ssh
(請參閱:如何在通過 ssh 連接到遠端伺服器時在 fish shell 中自動啟動 tmux)連接但我對程式碼可讀性不滿意並想了解有關fish
shell 的更多資訊(我已經閱讀教程並通過參考查看)。我希望程式碼看起來像那樣(我知道語法不正確,我只是想展示這個想法):set PPID (ps --pid %self -o ppid --no-headers) if ps --pid $PPID | grep ssh set attached (tmux has-session -t remote; and tmux attach-session -t remote) if not attached set created (tmux new-session -s remote; and kill %self) end if !\(test attached -o created\) echo "tmux failed to start; using plain fish shell" end end
我知道我可以儲存
$status
es 並將它們與test
整數進行比較,但我認為它很難看,甚至更難讀。所以問題是重用$status
es 並在if
and中使用它們test
。我怎樣才能實現這樣的目標?
您可以將其建構為 if/else 鏈。可以(雖然笨拙)使用 begin/end 將復合語句作為 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
一個更好的風格是布爾修飾符。begin/end 代替括號:
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"
(第一個開始/結束並不是絕對必要的,但可以提高 IMO 的清晰度。)
分解函式是第三種可能性:
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"