寻求一种在纯 POSIX shell 中计算或去除字符串前导空格的方法

问题描述 投票:0回答:1

我维护一个名为“tapview”的小 TAP 消费者。它的主要区别特征是它是用纯 POSIX shell 编写的,没有外部依赖项,除非算上 expr(1)。我故意不使用任何羞辱;目标是尽可能便携和轻便。

最近,我的一位用户提出了一个问题,即与功能类似的 Python 客户端相比,tapview 速度较慢,并指出重复调用 expr(1) 是罪魁祸首。我消除了其中的大部分,获得了非常显着的加速,几乎是 10 倍。关键路径上只剩下一个了。

我正在寻找一个纯 POSIX shell 配方(没有进程生成,没有 bashisms),它将计算字符串中的前导空格。或者,能够去除前导(但不能去除尾随)空格就足够了。

sh
1个回答
0
投票

给定 var 中的字符串

x
,

数:

leading_spaces="${x%%[! ]*}"
leading_spaces_count=${#leading_spaces}

脱衣:

leading_spaces="${x%%[! ]*}"
stripped="${x#$leading_spaces}"
© www.soinside.com 2019 - 2024. All rights reserved.