为什么子字符串扩展 [ test="-efoo"; echo ${test:0:2} ] 失败?

为什么子字符串扩展 [ test="-efoo"; echo ${test:0:2} ] 失败?

在 Linux Mint 上,使用 bash..

test="-ffoo"; echo ${test:0:2}

输出前两个字符的作品

test="-efoo"; echo ${test:0:2}

失败,输出显然为空。

我想这个的形式是

${parameter:offset:length}

我知道参数字符不能是*@#?-$!0_

但是$test参数——它的内容肯定可以是任何东西吗?我猜-e是触发了类似贝壳的东西,但为什么..

答案1

当你跑步时

test="-efoo"; echo ${test:0:2}

echo与参数一起运行-e,在某些echo实现中,包括echo大多数部署的内置命令bash,它是一个有效的选项,因此被“吞没”。

使用printf:

test="-efoo"; printf %s\\n "${test:0:2}"

相关内容