事实上,下面的代码是无效的,因为括号不能这样使用。如果我们删除它们,它会正常运行并输出:
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
答案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
如果条件本身是复杂的命令,则这是最有意义的。