저는 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에서 작동하는 것으로 보입니다. 이들 중 하나에 대해 나는 다음을 얻습니다.
$ 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