部分文字列拡張[test = "-efoo"; echo ${test:0:2} ]が失敗するのはなぜですか?

部分文字列拡張[test = "-efoo"; echo ${test:0:2} ]が失敗するのはなぜですか?

Linux Mint では bash を使用します。

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

最初の2文字の出力が機能します。

しかし、

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

失敗し、出力は明らかに空です。

こんな形だと思います。

${parameter:offset:length}

パラメータ文字は*@#?-$!0_

しかし、$testパラメータ - 確かにその内容は何でもできますか?-eシェルのようなものが爆発したようですが、なぜ..

答え1

走るとき

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

echoほとんどのデプロイされた組み込みコマンドを含む一部の実装では、-e引数echoを使用して実行することが有効なオプションであるため、「飲み込まれます」。echobash

printf使用:

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

関連情報