![](/img/trans.png)
[英]Does bash have a `default`-equivalent for the case statement when using fallthrough?
[英]Does starting parenthesis in Bash case statement have meaning?
我在 Bash 腳本中找到了一個 case 語句,如下所示:
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
我從未見過使用起始(
,我只見過SOME_CASE) command list;;
. 我找不到對這種其他格式的任何引用 - 這個起始括號有什么特殊意義嗎?
起始括號是可選的,但它(通常)保留平衡括號,這使得在vim
等編輯器中更容易,它可以從右括號(例如)
, ]
, }
)跳轉到匹配的左括號,考慮嵌套括號。 它沒有其他意義。
原始的 Bourne shell 不支持前導左括號。
另請參見復合命令case
的 POSIX shell 規范或條件構造下的 Bash 手冊。
看起來您的腳本似乎急需使用 Bash數組(另請參見Shell 參數)。
declare -a args
args+=("argument 0")
args+=("argument 1")
args+=("argument 2" "argument 3" "argument 4 with spaces")
set -- "${args[@]}"
沒有case
; arguments 的數量沒有限制。 如何構建陣列有待討論,但單行而不是 10 路case
是引人注目的。
根據:
man 1 bash
case
運算符的格式為:
[ [(] 模式 [ | 模式 ]...) 列表中的大小寫詞;; ]... esac
左括號在方括號中,這意味着它不是必需的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.