2011-07-04 78 views
1

我有一個奇怪的問題,我想不出BASH腳本。我不知道爲什麼這會繼續發生。由於篇幅有限,我沒有發表整個劇本,只有重要的部分。奇怪的行爲的cp命令

信息在腳本的評論中。

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

一如既往,將shebang更改爲'#!/ bin/bash -x'並查看輸出並確保所有內容都已正確展開... –

+0

@Fredrik謝謝,我不知道如何調試它。我發現有一個小錯誤... – user219882

+0

而不是測試-e目錄,你會更好地測試-d – hornetbzz

回答

3

更改家當來#!/bin/bash -x,並期待在輸出,並確保一切適當擴大...

瞭解更多關於bash的調試here

+1

也不用多說了:'-e'在錯誤時停止(在正常信號陷阱下) – sehe

+0

Tomas,答案已被接受,但它不需要處理真正的問題('cp'問題)。無論如何,「cp」錯誤是什麼?這是如何解決的? – mgarciaisaia