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
항상 bash는 디버깅에 대해 자세히 알아보기 shebang을'#!/bin/bash -x'로 변경하고 출력을보고 모든 것이 제대로 확장되었는지 확인하십시오 ... –
@Fredrik Thanks , 나는 그것을 디버깅하는 방법을 몰랐다. 나는 약간의 실수를 발견했다 ... – user219882
-e 디렉토리를 테스트하는 대신에 -d – hornetbzz