Fish
如何在fish中的if語句中對多個條件進行分組
照原樣,下面的程式碼是無效的,因為括號不能那樣使用。如果我們刪除它們,它執行良好,並輸出:
true true
程式碼:
#!/usr/bin/fish if ( false ; and true ) ; or true echo "true" else echo "false" end if false ; and ( true ; or true ) echo "true" else echo "false" end
如何獲得括號中指示的功能?
所需的輸出:
true false
從魚教程:
對於更複雜的條件,使用 begin 和 end 對其中的部分進行分組。
對於一個更簡單的範例,您可以查看來自 stackoverflow的這個答案。
對於您的程式碼,您只需替換
(
withbegin ;
和)
with; end
。#!/usr/bin/fish if begin ; false ; and true ; end ; or true echo "true" else echo "false" end if false; and begin ; true ; or true ; end echo "true" else echo "false" end
替代解決方案:將條件鏈的一部分外包給一個函式
像這樣:
#!/usr/bin/fish function _my_and_checker return $argv[1]; and argv[2] end function _my_or_checker return $argv[1]; or argv[2] end if _my_and_checker false true ; or true echo "true" else echo "false" end if false; and _my_or_checker true true echo "true" else echo "false" end
如果條件本身是複雜的命令,這是最有意義的。