我使用的是 mac,bash 版本 5.0.2。
明白啦:
v="ksdjfksjkjsdf"
v2=${v::-6}
Run Code Online (Sandbox Code Playgroud)
得到这个:
-bash: -6: substring expression < 0
Run Code Online (Sandbox Code Playgroud)
${PARAMETER:OFFSET:LENGTH}:负 LENGTH 值用作从字符串 4.2-alpha 末尾的偏移量
它似乎适用于 Bash 版本 4.2.53、4.4.12 和 5.0.3。使用其中任何一个,我得到:
$ s=123456; echo "${s::-2}"
1234
$ s=123456; echo "${s::-8}"
bash: -8: substring expression < 0
Run Code Online (Sandbox Code Playgroud)
也就是说,只要负长度的绝对值不大于字符串的长度,它就可以工作。