私はMac、bashバージョン5.0.2を使用しています。
受け取る:
v="ksdjfksjkjsdf"
v2=${v::-6}
これを得ました:
-bash: -6: substring expression < 0
答え1
${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
つまり、負の長さの絶対値が文字列の長さより大きくない限り機能します。
答え2
スクリプトの実行に正しいbashバージョンを使用していますか?あなたのシャーバンラインはこんにちは?スクリプトを呼び出す方法bash myscript.sh?
答え3
これは働きます:
v="aksdjfkajsdkfjakdf"
length=${#v}
v2=${v:0: length - 6}
答え4
私は次の方法でそれをしました
v="ksdjfksjkjsdf"
echo $v| awk -F "" '{gsub("","\n",$0);print $0}'| sed '/^$/d'| sed -n '1,7p'| perl -pne g"/\n//g"
出力
echo $v| awk -F "" '{gsub("","\n",$0);print $0}'| sed '/^$/d'| sed -n '1,7p'| perl -pne g"/\n//g"
ksdjfks