prefix="N774"
prefix_trunc=${prefix:1:3}
${prefix:1:3} 起什么作用?我搜索过,但没有得到任何答案。
谢谢
答案1
做什么${prefix:1:3}
?
这被称为 Shell 参数扩展。
Shell 参数扩展
$ 字符用于引入参数扩展、命令替换或算术扩展。要扩展的参数名称或符号可以用括号括起来,括号是可选的,但可以保护要扩展的变量免受其后紧随的字符的影响,因为这些字符可能会被解释为名称的一部分。
当使用括号时,匹配的结束括号是第一个未被反斜杠转义或在引号字符串中,并且不在嵌入式算术扩展、命令替换或参数扩展中的}。
参数扩展的基本形式为:
${parameter}
参数的值被替换。当参数是具有多于一位数字的位置参数,或者参数后面跟着不被解释为其名称一部分的字符时,需要使用括号。
...
${parameter:offset} ${parameter:offset:length}
从 offset 指定的字符开始,扩展至参数的最多 length 个字符。如果省略 length,则扩展至参数的子字符串,从 offset 指定的字符开始。length 和 offset 是算术表达式。这称为子字符串扩展。
- 长度必须计算为大于或等于零的数字。
- 如果偏移量的计算结果小于零,则该值将用作距参数值末尾的偏移量。
- 如果参数是@,则结果是从偏移量开始的长度位置参数。
- 如果参数是一个通过@或*索引的数组名,则结果为以${parameter[offset]}开头的数组长度成员。
- 子字符串索引从零开始,除非使用位置参数,在这种情况下索引从 1 开始。