호스트 이름 셸 스크립트 쿼리

호스트 이름 셸 스크립트 쿼리

아래 스크립트를 이해할 수 없습니다.

GUBUN=${호스트 이름:${#HOSTNAME}-1:1}

나는 이 호출 호스트 이름만 알고 있지만 완전히 이해할 수는 없습니다.

내가 아는 것 ${#HOSTNAME}-1: 호출 호스트 이름의 마지막 문자

마지막 호스트 이름 문자가 'x'인 경우 스크립트는 ${HOSTNAME:x:1}입니다. 이해가 안 됩니다...

답변1

${HOSTNAME}은 시스템의 호스트 이름을 포함하는 변수입니다.

${#HOSTNAME}은 호스트 이름의 매개변수 길이(문자)입니다.

따라서 $HOSTNAME 값을 사용하여 끝(오프셋)부터 1문자를 시작하고 처음 1문자를 가져옵니다.

kevlinux@ubuntu:~$ echo $HOSTNAME
ubuntu 
kevlinux@ubuntu:~$ echo ${HOSTNAME: ${#HOSTNAME}-1: 1}
u

출처: man bash 및 매개변수 확장 검색.

답변2

최근 쉘( bash)에서는 다음을 사용할 수도 있습니다.

echo ${HOSTNAME: -1}

좋다 man bash:

${매개변수:오프셋:길이} 하위 문자열 확장.

. . .

오프셋이 0보다 작은 숫자로 평가되는 경우 해당 값은 매개변수 값 끝에서 문자 오프셋으로 사용됩니다.

길이를 생략하면... 값의 끝까지 확장됩니다.

("기본값"으로 해석되지 않도록 공백이 있는지 확인하세요)

관련 정보