![문자열에서 마지막 X자를 추출할 수 없습니다. [닫기]](https://linux55.com/image/150761/%EB%AC%B8%EC%9E%90%EC%97%B4%EC%97%90%EC%84%9C%20%EB%A7%88%EC%A7%80%EB%A7%89%20X%EC%9E%90%EB%A5%BC%20%EC%B6%94%EC%B6%9C%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
저는 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