gpt4 book ai didi

bash - 如何在案例陈述中使用模式?

转载 作者:行者123 更新时间:2023-11-29 08:39:44 26 4
gpt4 key购买 nike

man 页面说 case 语句使用“文件名扩展模式匹配”。
我通常希望某些参数有短名称,所以我去:

case $1 in
req|reqs|requirements) TASK="Functional Requirements";;
met|meet|meetings) TASK="Meetings with the client";;
esac

logTimeSpentIn "$TASK"

我尝试了像 req*me{e,}t 这样的模式,我知道它们会正确扩展以匹配文件名扩展上下文中的那些值,但它不会'工作。

最佳答案

大括号扩展不起作用,但 *?[] 可以。如果你设置 shopt -s extglob 那么你也可以使用 extended pattern matching :

  • ?() - 模式出现零次或一次
  • *() - 模式出现零次或多次
  • +() - 模式出现一次或多次
  • @() - 出现一次模式
  • !() - 除模式外的任何内容

这是一个例子:

shopt -s extglob
for arg in apple be cd meet o mississippi
do
# call functions based on arguments
case "$arg" in
a* ) foo;; # matches anything starting with "a"
b? ) bar;; # matches any two-character string starting with "b"
c[de] ) baz;; # matches "cd" or "ce"
me?(e)t ) qux;; # matches "met" or "meet"
@(a|e|i|o|u) ) fuzz;; # matches one vowel
m+(iss)?(ippi) ) fizz;; # matches "miss" or "mississippi" or others
* ) bazinga;; # catchall, matches anything not matched above
esac
done

关于bash - 如何在案例陈述中使用模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4554718/

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