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
相关产品推荐
相关产品推荐

