아래 스크립트를 이해할 수 없습니다.
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보다 작은 숫자로 평가되는 경우 해당 값은 매개변수 값 끝에서 문자 오프셋으로 사용됩니다.
길이를 생략하면... 값의 끝까지 확장됩니다.
("기본값"으로 해석되지 않도록 공백이 있는지 확인하세요)