2014-07-07 3 views
0

저는 매일 밤 2시 30 분에 밤마다 실행되는 LaTex 파일을 렌더링하는 Bash 스크립트를 가지고 있습니다.이 파일은 GitHub 레포로 푸시됩니다. 지금은 변경 사항이 발생하지 않더라도 (새로운 커밋 없음) PDF가 생성되므로 오히려 쓸모가 없습니다. 내가 지금이 스크립트는 이것이다 :명령 bash의 결과

#!/bin/bash 
{ 
    PATH=/usr/local/texlive/2014/bin/armhf-linux:$PATH 
    cd /home/pi/Documents/Analysis-Notes/ 
    git pull #update all the data 
    cd Scripts 

    ./BuildAll.sh 
    ./BuildChapterByChapter.sh 


    cd /home/pi/Documents/Analysis-Notes/ 
    git add -A #Add all of the modified files to the commit 


    git commit -m 'Generated New PDFs' 

    git push 


} || { 
    echo -e "\n\n!!!! ERROR GENERATING FILES AUTOMATICALLY !!!!\n\n" 
} 

내 질문은 : 넣어 다음 git pull 명령의 응답이 무엇인지보고, 어떤 방법이 있나요 if 문 (간단한 문자열 비교) 어떤이를 생성하는 경우 변경 사항이있을 경우에만 파일을 ??

미리 감사드립니다.

+0

&가있을 때 git-pull의 출력은 무엇이고 새로운 파일이 없는지? 명령의 grep을 수행하여 명령의 상태를 확인할 수 있습니다. – Aserre

+1

'make'를 사용하십시오. 이미 하나 이상의 종속성이 업데이트 된 경우에만 명령을 실행하는 모든 논리가 있습니다. – chepner

답변

1

나는 그것에 관해 무엇이 중요한지 모르겠다.

if [[ $(git pull) != 'Already up-to-date.' ]]; then 
    # do everything 
fi 
+0

고마워요, 내가 뭘 찾고 있었는지. – ruben1691

1

몇 가지 옵션이 있습니다.

  1. make과 같은 도구를 사용하여 재구성해야하는 파일 만 다시 작성합니까?
  2. git fetch을 사용하여 업데이트 된 참조를 가져온 다음 로컬 분기 ref를 원격 분기 ref와 비교하십시오.
  3. 끌어 오기 전에 현재 버전을 저장하고 끌어온 후 현재 버전과 비교하십시오.