작성
·
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을 출력합니다.