Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用fallthrough时,bash对case语句是否有“default”等价物?_Bash_Switch Statement_Fall Through - Fatal编程技术网

在使用fallthrough时,bash对case语句是否有“default”等价物?

在使用fallthrough时,bash对case语句是否有“default”等价物?,bash,switch-statement,fall-through,Bash,Switch Statement,Fall Through,如您所见,我使用的是&而不是这样,如果action=b它将触发前两种情况。 然而,这样做的一个缺点是,*)不再“表示”其他所有内容,而是与“所有内容”匹配;因此,b也将触发最后一个 PowerShell可以做我想做的事情,因为它有一个专用的default关键字,Bash有类似的功能吗? 像[!(a | b | c)])之类的详尽工作怎么样 在4)echo bob;;;;&esac | | echo DEFAULT但case似乎没有返回任何代码。来自: 如果“;;”运算符,则在第一个模式匹配之后不

如您所见,我使用的是
&而不是
这样,如果
action=b
它将触发前两种情况。
然而,这样做的一个缺点是,
*)
不再“表示”其他所有内容,而是与“所有内容”匹配;因此,
b
也将触发最后一个

PowerShell可以做我想做的事情,因为它有一个专用的
default
关键字,Bash有类似的功能吗?
[!(a | b | c)])
之类的详尽工作怎么样

在4)echo bob;;;;&esac | | echo DEFAULT
case
似乎没有返回任何代码。

来自:

如果“;;”运算符,则在第一个模式匹配之后不会尝试后续匹配。使用“;&”代替“;;”使与下一个子句(如果有)关联的命令列表继续执行。使用“;;&”代替“;;”使shell测试下一个子句中的模式(如果有),并在成功匹配时执行任何关联的命令列表,继续执行case语句,就像模式列表不匹配一样

也许是这样的想法:

case "$action" in
a|b)
    echo for a or b
;;&
b|c)
    echo for c or b
;;&
*)
    echo for everything ELSE
;;&
esac
发件人:

如果“;;”运算符,则在第一个模式匹配之后不会尝试后续匹配。使用“;&”代替“;;”使与下一个子句(如果有)关联的命令列表继续执行。使用“;;&”代替“;;”使shell测试下一个子句中的模式(如果有),并在成功匹配时执行任何关联的命令列表,继续执行case语句,就像模式列表不匹配一样

也许是这样的想法:

case "$action" in
a|b)
    echo for a or b
;;&
b|c)
    echo for c or b
;;&
*)
    echo for everything ELSE
;;&
esac

这就是我所拥有的(最初的预编辑文章有一个拼写错误)我需要修复最终语句,它应该为“其他所有内容”触发,但为“所有内容”触发,所以只需使用
。。。它就是这样设计的。。。我不明白,如果你不想让它失效,为什么要使用故障诊断?请为输入发布一些示例输入和示例输出。也许做第二个
&a
?这样,如果匹配了
b
,则不会执行
*)
;如果只更改第二个
&
这使得最后一个的意思是“不是b | c”,这与“其他一切”的意思不同,也就是“不是a | b | c”。哈哈,我们最终得到了相同的想法。我将删除我的答案,因为你是第一个这样做的(我没有看到),但我只会添加一个追加投票。我真的在寻找一个默认的等价物,对于其他进来的人,我会引用我删除的答案;“但我希望有一种方法不重新列出所有其他选项(因此,如果我在更多的开关中编辑,我不需要记住在列表的末尾添加它)。”这就是我所拥有的(最初的预编辑帖子有一个拼写错误),我需要修复最终语句,它应该触发“其他所有”,但触发“所有”,所以只需使用
。。。它就是这样设计的。。。我不明白,如果你不想让它失效,为什么要使用故障诊断?请为输入发布一些示例输入和示例输出。也许做第二个
&a
?这样,如果匹配了
b
,则不会执行
*)
;如果只更改第二个
&
这使得最后一个的意思是“不是b | c”,这与“其他一切”的意思不同,也就是“不是a | b | c”。哈哈,我们最终得到了相同的想法。我将删除我的答案,因为你是第一个这样做的(我没有看到),但我只会添加一个追加投票。我真的在寻找一个默认的等价物,对于其他进来的人,我会引用我删除的答案;“但我希望能找到一种不重新列出所有其他选项的方法(因此,如果我在更多开关中进行编辑,我不需要记住在最后将其添加到列表中)。”