簡體   English   中英

bash 在使用 fallthrough 時是否有與 case 語句等效的“default”?

[英]Does bash have a `default`-equivalent for the case statement when using fallthrough?

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

所以,正如你所看到的,我使用;;&而不是;; 所以如果action=b它將觸發前兩種情況。
然而,這樣做的一個缺點是*)不再“意味着”“其他一切”,而是會匹配“一切”; 因此b也將觸發最后一個。

PowerShell 能夠做我想做的事,因為它有一個專用的default關鍵字,Bash 有沒有類似的東西?
[!(a|b|c)])類的詳盡解決方法呢?

case 5 in 4) echo bob; ;;& esac || echo DEFAULT執行類似case 5 in 4) echo bob; ;;& esac || echo DEFAULT操作會很方便case 5 in 4) echo bob; ;;& esac || echo DEFAULT case 5 in 4) echo bob; ;;& esac || echo DEFAULT case 5 in 4) echo bob; ;;& esac || echo DEFAULTcase似乎沒有返回任何代碼。

bash 手冊

如果';;' 使用運算符,在第一個模式匹配后不會嘗試后續匹配。 使用 ';&' 代替 ';;' 使執行繼續執行與下一個子句關聯的命令列表(如果有)。 使用 ';;&' 代替 ';;' 使外殼程序測試下一個子句中的模式(如果有),並在成功匹配時執行任何關聯的命令列表,繼續執行 case 語句,就好像模式列表不匹配一樣。

也許這樣的想法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM