내 호스트 이름을 왼쪽에서 두 개의 "부분"으로 자르려고 합니다. 호스트 이름은 다음과 같습니다.
servername-01.location.domain.com
또는
servername-01.location.test.domain.com
다음과 같이 줄여야 합니다.
servername-01.location
일부 도메인 이름에는 더 긴 "접미사"가 있기 때문에 처음 두 개의 "부분"이 필요하지만 두 번째 "."는 포함하지 않습니다.
다음 명령을 사용하여 접미사에서 호스트 이름을 제거했지만 접미사에 대한 하위 도메인 수가 변경될 수 있으므로 더 이상 작동하지 않는다는 것을 깨달았습니다.
${HOSTNAME%.*.*}
어떤 도움이라도 대단히 감사하겠습니다!
답변1
당신은 그것을 사용할 수 있습니다
SHORTHOST=$(cut -d "." -f 1-2 <<< $HOSTNAME)
매 사이클마다 원래 호스트 이름을 필드로 자르고 .
처음 두 개만 인쇄합니다.
답변2
실제로 매개변수 확장을 통해 이러한 가변적인 부분을 제거하는 것은 어렵다. 하지만 우회적인 방법이 있습니다. 먼저 처음 두 세그먼트를 삭제하고(실제로는 유지하고 싶습니다) 꼬리 부분을 남겨둔 다음 다음을 사용할 수 있습니다.저것원래 문자열에서 제거할 부분으로.
그래서:
$ hostname=servername-01.location.test.domain.com
$ echo "${hostname%.${hostname#*.*.}}"
servername-01.location
( .${hostname#*.*.}
예 .test.domain.com
, 그다음에는 ${hostname%.test.domain.com}
그렇습니다 servername-01.location
.)