하위 문자열 확장 [ test="-efoo"; echo ${test:0:2} ]이 실패하는 이유는 무엇입니까?

하위 문자열 확장 [ test="-efoo"; echo ${test:0:2} ]이 실패하는 이유는 무엇입니까?

Linux Mint에서는 bash를 사용합니다.

test="-ffoo"; echo ${test:0:2}

처음 두 문자 출력이 작동합니다.

하지만

test="-efoo"; echo ${test:0:2}

실패하고 출력은 분명히 비어 있습니다.

이런 형태인 것 같아요

${parameter:offset:length}

매개변수 문자는*@#?-$!0_

하지만 $test매개변수 - 확실히 그 내용은 무엇이든 될 수 있나요? -e포탄같은게 터진거 같은데 왜 ..

답변1

당신이 달릴 때

test="-efoo"; echo ${test:0:2}

echo대부분의 배포된 내장 명령을 포함하여 -e일부 echo구현 에서는 인수를 사용하여 실행하는 것이 유효한 옵션이므로 "삼켜집니다".echobash

printf사용:

test="-efoo"; printf %s\\n "${test:0:2}"

관련 정보