${parameter:offset:length}
意思是 提取 parameter 这个字符串 从第offset个字节右边的字节为起始位置(就是说 offset+1 是起始位置) 连续的length 个字节
简而言之,就是要提取parameter中的一个字串。
还是举个例子吧:
=======
先拿你的例子:
i=1234
h=2
echo ${i:1:$h}
结果是输出:23
分析:取串“1234”的第(1+1)个字节开始连续的2个(h=2)字节组成的字串,即为“23”
=======
其实这个常用于脚本中的取某个路径,例如:
dir=/var/ftp/user/onemter.conf
rootDir=${dir:0:4}
objectFile=${dir:14} #这个写法省略了其中的length,也就是一直到结束。
echo $rootDir
echo $objectFile
输出结果是:
/var
onemter.conf
分析:不用多说了吧,取dir第1个开始连续的4个字节,即/var
${parameter:offset}这个省略了length,就是说从(offset+1)开始一直到末尾的字串。
+++++++++++++++
突然想起来,还有个拓展,嘿。
假如offset取负值的话,就是从右往左数。
但是不能直接把负值写上,需要加上运算括号。
比如:${i:-1:3} 这种直接写负值就是错的,因为跟${var:-word}有冲突。
要这样写:${i:((-1)):3} 要加上运算括号,证明这是一个负数。