文字列から最後のX文字を抽出できません。 [閉じる]

文字列から最後のX文字を抽出できません。 [閉じる]

私はMac、bashバージョン5.0.2を使用しています。

受け取る:

    v="ksdjfksjkjsdf"
    v2=${v::-6}

これを得ました:

-bash: -6: substring expression < 0

ベストアンサー1

Bash 4.2では、負の長さの使用が追加されました。:

${PARAMETER:OFFSET:LENGTH}: 負の LENGTH 値は、文字列の末尾の 4.2 アルファオフセットとして使用されます。

Bashバージョン4.2.53、4.4.12、および5.0.3で動作しているようです。これらのうちの1つについて、私は次のようになります。

$ s=123456; echo "${s::-2}"
1234
$ s=123456; echo "${s::-8}"
bash: -8: substring expression < 0

つまり、負の長さの絶対値が文字列の長さより大きくない限り機能します。

おすすめ記事