You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash子串扩展中是否可省略offset参数?

Bash子串扩展省略offset的文档疑问

先看以下代码示例:

str=abcde
echo ${str:0:2} # output: ab
echo ${str::2} # output: ab

上述代码执行结果完全一致。

根据Bash官方文档描述:

这称为子串扩展(Substring Expansion)。它会展开为parameter值中从offset指定的字符开始、最多length个字符的子串。若parameter为@或*、下标为@或*的索引数组,或关联数组名称,结果会如下文所述有所不同。若省略length,则展开为从offset指定的字符开始到parameter值末尾的子串。length和offset均为算术表达式(参见Shell Arithmetic)。

若offset计算结果为负数,则该值表示从parameter值末尾开始的字符偏移量。若length计算结果为负数,则它会被解释为从parameter值末尾开始的字符偏移量而非字符数,展开结果为offset到该偏移量之间的字符。注意负数偏移量必须与冒号之间至少有一个空格,以免与:-扩展混淆。

文档中仅提及可省略length参数,但未说明offset参数也可省略,然而实际操作中省略offset(即使用${str::length}格式)是可行的,且效果等同于${str:0:length}。

想确认是否存在未注意到的、关于省略offset参数的官方文档说明。


内容的提问来源于stack exchange,提问作者Lasy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:55:19