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

部分文字列拡張[test =

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}"

おすすめ記事