2011-07-04 11 views
1

BASH 스크립트에 이상한 문제가 있습니다. 알아낼 수 없습니다. 왜 이런 일이 계속 일어나는지 모르겠다. 나는 그 길이 때문에 전체 대본을 게시하지 않지만 중요한 부분 만 게시합니다.cp 명령의 이상한 동작

정보는 스크립트의 주석에 있습니다. #!/bin/bash -x에 오두막과 출력을보고 모든 것을 제대로 확장되어 있는지 확인

Script

# replaces %ZONE% placeholder 
# 2 params: path, zone in format z3, z4 
zonePath() { 
    value=`echo ${1} | sed "s/%ZONE%/${2}/"` 
    echo $value 
} 

createInstance() { 
    JBOSS_NAME="jboss" 
    JBOSS_DIR="/home/jboss" 

    # echo of OUTPUT_ZONE_DIR_TMP looks correctly like /home/jboss/z3 
    OUTPUT_ZONE_DIR_TMP=`zonePath ${OUTPUT_ZONE_DIR} ${3}` 

    if [[ ! -e ${OUTPUT_ZONE_DIR_TMP}/${JBOSS_NAME}/server/${2} ]]; then 
    mkdir -p ${OUTPUT_ZONE_DIR_TMP}/${JBOSS_NAME}/server/${2} 
    cp -r ${JBOSS_DIR}/${JBOSS_NAME}/server/default/* ${OUTPUT_ZONE_DIR_TMP}/${JBOSS_NAME}/server/${2} 
    fi 

    # BUT here I get an error of wrong directory because the path is 
    # /home/jboss//jboss/server - the z3 string is missing there - WHY??? 
    cp -r `zonePath ${SOLUTION_APP_PATH} ${3}`/${1} ${OUTPUT_ZONE_DIR_TMP}/${JBOSS_NAME}/server/${2}/deploy 
} 

# in the script I call the createInstance function for example like this 
createInstance "system-long-name" "sys" z3 
createInstance "system2-long-name" "sys2" z4 
+4

항상 bash는 디버깅에 대해 자세히 알아보기 shebang을'#!/bin/bash -x'로 변경하고 출력을보고 모든 것이 제대로 확장되었는지 확인하십시오 ... –

+0

@Fredrik Thanks , 나는 그것을 디버깅하는 방법을 몰랐다. 나는 약간의 실수를 발견했다 ... – user219882

+0

-e 디렉토리를 테스트하는 대신에 -d – hornetbzz

답변

3

변경 ...

here

+1

또한 언급하자면 : -e는 정상적인 신호 트래핑 하에서 에러를 멈추기 위해 사용됩니다. – sehe

+0

Tomas, 답변이 받아 들여졌지만, 진짜 질문 ('cp' 문제)과 관련이 없습니다. 어쨌든'cp' 오류는 무엇입니까? 어떻게 해결 되었습니까? – mgarciaisaia