gpt4 book ai didi

fish shell : Conditional execution based on $status?

转载 作者:行者123 更新时间:2023-12-04 03:25:43 24 4
gpt4 key购买 nike

在 fish shell 中很难找到条件语法。有没有人提供有关如何使用 ands 和 ors 编写 if 的解释的链接?

特别想写

if not $status
do a command
end

当前一个命令返回不成功时执行命令。我该怎么做?

最佳答案

参见 http://fishshell.com/docs/current/commands.html#ifhttp://fishshell.com/docs/current/tutorial.html#tut_conditionals .

Fish 的 if 结构如下所示:

if COMMAND
# do something if it succeeded
else
# do something if it failed ($status != 0)
end

还有notandor 命令,你可以像这样使用

if not COMMAND1; or COMMAND2
# and so on

如果你真的想测试一个变量(例如$status),你需要使用test作为命令,比如

if test $status -eq 0

请记住 $status 在每个命令后都会发生变化,因此如果您需要使用较早命令的状态(在提示中很常见),您需要按照 Joachim Pileborg 所说的进行操作,将其保存到另一个变量。

另外,test 有一些引号问题(因为它是 fish 中坚持 POSIX 的少数部分之一)- 如果在 test $foo -eq 0 $ foo 未定义,测试将出错,如果它在 test -n $foo 中未定义,测试将为真(因为 POSIX 要求只有一个参数的测试为真)。


作为旁注,在 2.3.0 之前的 fish 版本中,您需要在条件周围添加 beginend 以及 and 因为它被解释得很奇怪。

所以你必须做

如果开始命令;或命令 2;结尾 # 为 status = 0 做一些事情

关于 fish shell : Conditional execution based on $status?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39231817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com