gpt4 book ai didi

bash - 使用 extglob 的案例陈述

转载 作者:行者123 更新时间:2023-11-29 09:23:21 25 4
gpt4 key购买 nike

打开extglob,我想匹配一个变量

*( )x*

(在正则表达式中:/^ *x.*/)

这个:

main(){
shopt -s extglob
local line=' x bar'
case "$line" in
*( )x*) ;;
*) ;;
esac
}
main "$@"

给我一个语法错误。删除 extglob 括号或将 shopt -s extglob 移到 main 外部范围,都可以解决问题。为什么?为什么 shopt -s extglob 命令需要在外面?

最佳答案

bash 必须解析该函数​​才能创建它,并且由于您使用的扩展 glob 语法通常是无效的,它无法解析该函数​​,除非 extglob 在创建该函数时打开.

最终结果:extglob 必须在函数声明时和函数运行时都在上。函数中的 shopt -s extglob 行处理第二个要求,但不是第一个。

顺便说一句,这在其他一些地方可能会成为问题。例如,如果您有一个 whilefor 循环,bash 需要在开始运行之前解析整个循环。因此,如果循环中的某些内容使用了 extglob,则必须在循环开始之前启用它。

关于bash - 使用 extglob 的案例陈述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912289/

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