2013-11-26 2 views
0

내 설정 파일 내용이 내 설정 스크립트 내에서 배치되는 이유는 설정 파일이 내 설정 파일에서 가져 오기 때문에 문제가 있습니다. 이로 인해 배포 스크립트가 매우 커지게됩니다. 그것은이셸을 사용하여 변수를로드하여 자리 표시자를 바꿉니다.

setting.sh

USER="Tom" 

log.conf

log=/$PLACEHOLDER_USER/full.log 

배포와 같은 뭔가를 bash는 가능하면 것인지

궁금 해서요. sh

#!/bin/bash 

# Pull in settings file 
. ./settings.sh 

# Link config to right location 
ln -s /home/log.conf /home/logging/log.conf 

# Write variables on top of placeholder variables in the file 
for $PLACEHOLDER_* in /home/logging/log.conf 
do 
(Replace $PLACEHOLDER_<VARAIBLE> with $VARIABLE) 
done 
나는이 내 저장소에서 일반적인 설정 파일을 이동 한 다음에서 적절한 변수를 추가 할 것입니다 $ placeholder_

이 프로세스로 시작하는 설정 파일에있는 모든 변수에 대해 작업 할 내 설정의 자리 표시 자 변수 위에 파일을 설정합니다.

내 deployment.sh를 사용하여 실제로 어떻게 작동하는지 파악할 수 없습니다.

+0

설정 파일 ('USER = Tom' 등을 정의하는 파일)을''소스 화하는 것만으로''$ USER "'를 사용하면됩니까? – Alfe

+0

관리자와 같은 프로그램이 외부 파일의 소싱을 허용하지 않는 것 같습니다. – Jimmy

+0

Whoa? 어떻게 그들을 막을 수 있어야합니까? 현재 스크립트 외에도 파일이 있다면'source filename'을 사용하여 소스를 만들 수 있습니다. 감독자는 이것을 어떻게 금지해야합니까? – Alfe

답변

1

이 작은 스크립트는 settings.sh에서 모든 변수 라인을 읽고 PLACEHOLDER_xxx을 각각 file으로 바꿉니다. 이게 도움이 되니?

while IFS== read variable value 
do 
    sed -i "s/\$PLACEHOLDER_$variable/$value/g" file 
done < settings.sh 
+0

안녕. 고마워요. 그것은 좋은 것처럼 보이지만 내가 생각하고있는 다른 방향에서 접근합니다. PLACEHOLDER_XXX 변수를 모두 읽고 $ XXX 값으로 바꾸는 것이 낫지 않습니까? – Jimmy

0
#!/usr/local/env bash 
set -x 

ln -s /home/log.conf /home/logging/log.conf 

while read user 
do 
usertmp=$(echo "${user}" | sed s'@USER=\"@@' \ 
sed s'@"[email protected]@') 
user="${usertemp}" 
log="${user}"/full.log 
done < setting.sh 

난 정말 당신이 뭘하려는 건지의 나머지 부분을 이해하지 못하고, 나는 고백한다, 그러나 이것은 잘하면 당신에게 아이디어를 줄 것이다. 읽기를 사용하십시오.

+0

나는 이걸 생각하지 않아. 이 파일에서 $ PLACEHOLDER_ 과 같은 변수를 찾고 settings.sh에서 $ VARIABLE 값으로 대체하려고합니다. 예를 들어 파일에 "$ PLACEHOLDER_USER"이 있으면 해당 파일에 "Tom"을 넣습니다. – Jimmy

관련 문제