2014-04-22 5 views
1

나는 나의 현재 IP 인쇄 다음과 같은 기능이 있습니다확인 빈 출력

function get_ip 
    echo -n -s (ifconfig en1 | grep inet | grep -v inet6 | awk '{print $2}') 
end 

$ get_ip 
192.168.1.4~ 

내가 offlineget_ip 경우 반환 아무것도 인쇄하지 기대하고 있습니다 (""그것을 인쇄 나 오프라인있을 때) .

내가 시도 :

if get_ip 
    echo "Yes" 
else 
    echo "No" 
end 

그러나 그것은 항상 Yes를 반환합니다.

어떻게하면됩니까?

답변

3

내장 테스트의 종료 상태를 확인해야합니다.

if test -n (get_ip) 
    echo Yes 
else 
    echo No 
end 

테스트 동안, 나는 내가 최대 따를 -n-z 사이에 약간의 불일치를 발견했다. 이 시도 :

if test -z (get_ip) 
    echo No 
else 
    echo Yes 
end 

물고기 테이너에서 this answer에 따르면, 모두 대답은 2 일 작동하더라도 잘못이다. 사용 중 하나 그것은 여전히 ​​항상 돌아 오는 것

count (get_ip); and echo Y; or echo N 

또는

set result (get_ip) 
test -n "$result"; and echo Y; or echo N 
+0

'Yes'. – jviotti

+0

감사합니다.'test -z'는 매력처럼 작동했습니다! – jviotti