2012-09-13 2 views
2

그가 사용중인 virtualenv의 버전이 최신 버전이 아닌지 사용자에게 알려주려고합니다.Makefile에서 소프트웨어 버전 테스트

하지만 아직 작동하지 않습니다. 어떤 생각?

virtualenv: 
    if [ ! -f $(PYTHON) ]; then \ 
     version=`$(VIRTUALENV) --version`;\ 
     check="1.8.2";\ 
     winner=`echo -e "$${version}\n$${check}" | sed '/^$$/d' | sort -nr | head -1`;\ 
     if [[ "$(winner)" = "$(version)" ]]; then \ 
      $(VIRTUALENV) $(ROOT_DIR)/lib/virtualenv; \ 
     else \ 
      echo "Please upgrade your virtualenv>=1.8.2";\ 
      exit 1;\ 
     fi \ 
    fi 
+0

이유는 단순히'의 경우 $ $ ($ (VIRTUALENV) --version) 1.8.2에서) 사실;와 약간의 메이크 트릭이었다 *) false ;; esac' 당신은 어떤 진단 프로그램을 추가하고 싶을 지 모르지만 비교 코드는 너무 복잡하고 부서지기 쉬운 것처럼 보입니다. – tripleee

답변

3

는 확인이 $

virtualenv: 
    if [ ! -f $(PYTHON) ]; then \ 
     version=`$(VIRTUALENV) --version`;\ 
     check="1.8.2";\ 
     winner=`echo -e "$${version}\n$${check}" | sed '/^$$/d' | sort -nr | head -1`;\ 
     if [[ "$${winner}" = "$${version}" ]]; then \ 
      $(VIRTUALENV) $(ROOT_DIR)/lib/virtualenv; \ 
     else \ 
      echo "Please upgrade your $${version} version of virtualenv to >= 1.8.2";\ 
      echo " $ sudo pip install -U distribute pip virtualenv";\ 
      exit 1;\ 
     fi \ 
    fi 
+0

이것을 .sh 파일에 넣고 대상에서 .sh 파일을 호출하는 것이 좋습니다. 나는 bash를 스크립팅하기 위해 Make를 사용하고 방금 \ '과 $$의 방대한 양을 유지하기 위해 타겟에'인라인 '한 줄짜리 bash 명령을 혼합하는 경향이있다. Make 변수를 많이 사용하지 않는 스크립트. YMMV –

관련 문제