Bash脚本的那些坑:为什么这个看似简单的shell能折磨程序员五十年
1979年,Bourne Shell诞生于贝尔实验室。四十五年后,它的继承者Bash依然是Linux系统管理的基石。然而,这个看似简单的工具却隐藏着无数陷阱,让一代又一代的程序员在深夜调试中怀疑人生。一个未加引号的变量、一个忘记检查的返回值、一个在子shell中丢失的计数器——这些看似微不足道的细节,足以让脚本在关键时刻崩溃。 ...
1979年,Bourne Shell诞生于贝尔实验室。四十五年后,它的继承者Bash依然是Linux系统管理的基石。然而,这个看似简单的工具却隐藏着无数陷阱,让一代又一代的程序员在深夜调试中怀疑人生。一个未加引号的变量、一个忘记检查的返回值、一个在子shell中丢失的计数器——这些看似微不足道的细节,足以让脚本在关键时刻崩溃。 ...
2007年,Russ Cox发表了一篇影响深远的文章《Regular Expression Matching Can Be Simple And Fast》。他做了一个令人震惊的对比测试:用正则表达式 a?^n a^n(n个可选a后跟n个a)匹配字符串 a^n(n个a)。当n=29时,Perl需要超过60秒,而Thompson NFA实现只需要20微秒——相差三百万倍。更惊人的是,当n=100时,Thompson NFA只需不到200微秒,而Perl理论上需要超过10^15年。 ...