我维护一个名为“tapview”的小 TAP 消费者。它的主要区别特征是它是用纯 POSIX shell 编写的,没有外部依赖项,除非算上 expr(1)。我故意不使用任何羞辱;目标是尽可能便携和轻便。
最近,我的一位用户提出了一个问题,即与功能类似的 Python 客户端相比,tapview 速度较慢,并指出重复调用 expr(1) 是罪魁祸首。我消除了其中的大部分,获得了非常显着的加速,几乎是 10 倍。关键路径上只剩下一个了。
我正在寻找一个纯 POSIX shell 配方(没有进程生成,没有 bashisms),它将计算字符串中的前导空格。或者,能够去除前导(但不能去除尾随)空格就足够了。
给定 var 中的字符串
x
,
数:
leading_spaces="${x%%[! ]*}"
leading_spaces_count=${#leading_spaces}
脱衣:
leading_spaces="${x%%[! ]*}"
stripped="${x#$leading_spaces}"