인프런 커뮤니티 질문&답변

anat님의 프로필 이미지
anat

작성한 질문수

시스템엔지니어가 알려주는 리눅스 실전편 Bash Shell Script

2-3. 웹 서버 트러블의 재발 방지를 위한 쉘 스크립트(2)

log_mon.sh의 HOST 변수

작성

·

417

0

안녕하세요 질문드립니다. 

먼저 telegram_example.sh의 코드입니다(선생님과 같습니다)

그리고 DIR, HOST변수 선언을 마친 log_mon.sh에서  

 ./log_mon.sh 실행 시, 

아래와 같이 []로 표시되고 hostname을 받아오지 못했는데요

log_mon.sh내 코드 중,  telegram_example.sh 쉘 스크립트를 실행하는 라인에서 ${HOST} 대신 ${HOSTNAME}로 변수를 불러오고 HOST 변수 선언 라인을 주석처리 하니, 아래와 같이 정상적으로 hostname [cent1]을 불러왔습니다. 

 

위 사진은  log_mon.sh 내 HOST 변수 선언 라인을 주석처리하고 ${HOSTNAME}로 호출 할 때 ./log_mon.sh 결과입니다

전체 코드와 출력결과 설명이 길었습니다,

제 질문은

log_mon.sh 내 hostname을 받아오는 HOST 변수를 주석처리하고 ${HOSTNAME}이라는 선언하지 않았던 변수를 호출했을 때 정상적으로 cent1을 출력했는데, 이 ${HOSTNAME}는 어딜 보고cent1을 받아온 걸까요?

답변 3

0

그로스쿨님의 프로필 이미지
그로스쿨
지식공유자

강병현님 안녕하세요.

강의자료는  $(hostname) 인데 실습해보신건 ${hostname} 인 것 같네요.
소괄호를 중괄호로 입력해서 이런 문제가 발생한것 같아요.
소괄호는 괄호안의 명령어를 실행한다는 의미이고 중괄호는 변수명으로 인식합니다.

HOSTNAME이라는 변수는 리눅스에서 기본으로 제공해주는 환경변수이기 때문에 사용할 수 있는 것입니다.

제가 log_mon.sh 스크립트에서 사용한 것은 hostname이라는 명령어를 실행해서 그 값을 가져오게 만드는 것이었어요.

hostname을 실행하면 echo ${HOSTNAME} 과 같은 결과를 가져오므로 어느 것을 사용하셔도 무방합니다.

0

log_mon.sh에 HOST 변수 선언을 할때 소문자가 아닌 대문자로 변경하면 정상 작동합니다.

HOST="${hostname}" (강의자료)

HOST="${HOSTNAME}" (수정)

0

그로스쿨님의 프로필 이미지
그로스쿨
지식공유자

안녕하세요 아나더님! :)

열심히 해주고 계시네요!!!! 너무 기쁩니다 ㅠ

 

답변드릴게요!

HOSTNAME 을 사용할 수 있는 이유는 리눅스에서 기본으로 제공하는 변수이기 때문입니다. 
터미널에서 echo ${HOSTNAME} 을 입력해 보시면 등록한 hostname을 출력합니다. 
anat님의 프로필 이미지
anat

작성한 질문수

질문하기