在fish shell中,如何在if语句中放入两个条件?

时间:2013-07-27 16:35:57

标签: if-statement fish

我想用bash做什么:

> if true; then echo y; else echo n; fi
y
> if false; then echo y; else echo n; fi
n
> if false || true; then echo y; else echo n; fi
y

现在尝试用鱼:

> if true; echo y; else; echo n; end
y
> if false; echo y; else; echo n; end
n

# Here 'or true' are just two arguments for false
> if false or true; echo y; else; echo n; end 
n

# Here 'or true;' is a command inside the if
> if false; or true; echo y; else; echo n; end 
n

# Can't use command substitution instead of a command
> if (false; or true); echo y; else; echo n; end
fish: Illegal command name “(false; or true)”

我如何在if中有两个条件?

3 个答案:

答案 0 :(得分:23)

另外两种方法:

方法一:

if begin false; or true; end
  echo y
else
  echo n
end

方法二:

false; or true
and echo y
or echo n

答案 1 :(得分:2)

这种方式有效,但这是一个丑陋的黑客:

> if test (true; and echo y); echo y; else; echo n; end 
y
> if test (false; and echo y); echo y; else; echo n; end 
n
> if test (false; or true; and echo y); echo y; else; echo n; end 
y

我衷心希望得到更好的答案。

答案 2 :(得分:0)

Since fish 2.3b1,可以使用errors:{"hi","bye"} / ifand条件下直接链接命令。 or不再需要。官方文档were updated in May 2016

所以现在这可以按预期工作:

begin ... end