2013-09-23 8 views
1

bash를 사용하여 현재 svn 개정판을 가져 와서 환경 변수 SVN_REVISION으로 설정하려고합니다. 이 환경 변수는 이미 설정되어 있거나 설정되어 있지 않을 수 있습니다. 이미 설정되어있는 경우, 설정되지 않은 경우이를 계산하고 에코합니다. 나는 SVN_REVISION이 이미 설정되어 있다면 무시하고 싶다. 매개 변수 확장에 대한 이해 부족으로 인해 실패한 다음 스크립트를 사용하고 있습니다.bash에서 환경 변수를 할당하기위한 매개 변수 확장

#!/bin/bash 

# If no directory provided as an argument, uses the current working directory as the source directory. 
RAW_SRC_DIR=${1:-`pwd`} 
COMPUTE_REVISION=$(svn info ${RAW_SRC_DIR} | grep '^Revision' | cut -d ':' -f2 | tr -d ' ') 
echo "${COMPUTE_REVISION}" ##Gets the revision successfully 
${SVN_REVISION:="$COMPUTE_REVISION"} #Fails with message: <SVN_REVISION> command not found 
export SVN_REVISION 
echo $SVN_REVISION 

어떻게 수정합니까?

답변

2

${parameter:=word} 구문의 효과 중 하나는 parameter 값으로 대체된다는 것입니다. 즉 쉘이 명령으로 얻는 번호를 실행하려고 시도한다는 것을 의미합니다. echo 줄에서 과제를 수행 한 후 export을 입력하십시오.

echo ${SVN_REVISION:="$COMPUTE_REVISION"} 
export SVN_REVISION 
+0

가 근무 주장하는 경우

[[ -z $SVN_REVISION ]] && \ SVN_REVISION=$(svn info ${1:-'pwd'} | grep '^Revision' | cut -d ':' -f2 | tr -d ' ') echo $SVN_REVISION export SVN_REVISION 

나. 감사! –

1

왜 분명한 이유는 무엇입니까? 당신이

echo ${SVN_REVISION:=$(svn info ${1:-`pwd`} | 
         grep '^Revision' | 
         cut -d ':' -f2 | 
         tr -d ' ')} 
export SVN_REVISION 
+0

감사합니다. if 조건을 사용하여 주변 코드를 알 수 있습니다. 어쩌면 나는 매개 변수 확장을 따라 잡으려고 노력 중이며 사용하고 싶다는 말을해야 할 것이다. –

+0

다른 하나를 추가했습니다. 먼저 기능을 배우고 사용법을 배웁니다. :) – rici

관련 문제