배시스크립트에 if []구문에 관한 질문입니다.
글쓴이: pok / 작성시간: 토, 2006/01/14 - 8:24오후
DNS에 새로운 네임서버를 추가하고 싶은데 있으면 추가 안하려합니다.
if grep $DNS /etc/resolv.conf then echo already else echo nameserver $DNS >> /etc/resolv.conf fi
이렇게 해서 사용하고 있습니다. 그런데, []구문이랑 어떻게 다르나요?
그러니까...
if [ "grep $DNS /etc/resolv.conf" ] then echo already else echo nameserver $DNS >> /etc/resolv.conf fi
는 작동을 안하는것 같은데, 어떤이유인지요?
그리고 if에 관련된 여러 팁들도 부탁드리겠습니다.
Forums:
따옴표로 둘러싸서 그렇습니다.[code:1]"grep $
따옴표로 둘러싸서 그렇습니다.
"grep $DNS /etc/resolv.conf"
그런데 따옴표를 안하면 다음과 같은 에러가 납니다.[code:1]
그런데 따옴표를 안하면 다음과 같은 에러가 납니다.
Re: 배시스크립트에 if []구문에 관한 질문입니다.
if 문은 그 뒤에 딸려 있는 인자를 새로운 명령으로 보고 그 반환값에 따라서 분기를 합니다. [] 구문 역시 [라는 특수한 프로그램이 있기 때문에 가능한 겁니다. (절대로 특수한 문법이 있는 게 아닙니다)
[ "grep $DNS /etc/resolv.conf" ] 라고 하면 [] 안의 내용이 수식(이나 뭐 그런 것들)으로 해석되고 그 결과에 따라 반환값이 달라집니다. 하지만 grep $DNS /etc/resolv.conf라는 부분은 따옴표를 치건 안 치건 올바른 수식이 아니기 때문에 [] 안에 쓸 수 없으며, 그냥 if grep ... 식으로 써야 합니다.
- 토끼군
댓글 달기