Bash extglob 的开启位置:函数第一行已经启用,为什么还没调用就报语法错 把扩展模式放进函数,在函数第一行执行 shopt -s extglob,脚本却还没调用函数就报语法错误。原因是 extglob 也会改变解析器怎样理解括号;解析器必须先读完函数定义,之后才可能执行函数体里的开启命令。... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Python match 的裸名称:常量已经定义,为什么 case 仍把任意输入都接住 把状态路由从 if 改成 match 时,程序员常把 READY = "ready" 放在函数里,然后写 case READY。看起来是在引用已有常量,实际却会把收到的值绑定给 READY。就算输入是 "broken... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Bash case 的三个结尾:停止匹配、直接贯穿与继续检查怎样区分 一个文件分类脚本想给 report.log 同时标记“日志”和“报告”,把 case 分支结尾改了一下,却又标上了“表格”。问题往往不在文件名,而在分支执行完之后选择了哪一种控制方式。Bash 的三个结尾长得接近,后... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Bash 双中括号的引号:同一个星号,为什么有时匹配整串有时只认自己 过滤名称时,把匹配模式存进变量是常见做法,但给变量补上双引号后,原本能匹配的文件名突然不通过了。这不一定是脚本写错引号,而是双中括号里的比较运算符允许右侧表达式承担不同职责:有时它是模式,有时它是字面文本。先写出问题... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读