我使用的是 mac,bash 版本 5.0.2。
收到:
v="ksdjfksjkjsdf"
v2=${v::-6}
得到这个:
-bash: -6: substring expression < 0
答案1
${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
也就是说,只要负长度的绝对值不大于字符串的长度,它就可以工作。
答案2
您确定正在使用正确的 bash 版本运行脚本吗?你的shebang线路还好吗?如何调用脚本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