実際、次のコードは括弧をこの方法で使用できないため、無効です。これを削除すると正常に実行され、次のように出力されます。
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
答え1
あなたはそれを使用することができますbegin
そしてend
条件文も同様です。
~から魚のチュートリアル:
より複雑な条件の場合は、startとendを使用してその部分をグループ化します。
より簡単な例については、以下を参照してください。この回答スタックオーバーフローで。
コードの場合(
とをに置き換えます。begin ;
)
; 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
答え2
代替ソリューション:条件付きチェーンの一部を関数としてアウトソーシング
このように:
#!/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
これは、条件自体が複雑なコマンドである場合に最適です。