2010-05-04 4 views
1

에서 괄호 안에 작동하지 않습니다소스 운영자는 내가이 조건을 내 bash는 스크립트에서 설정 파일을 포함하려면 bash는

config 파일 이름에 - 더 - 플라이 건설 및 저장됩니다
  1. 설정 파일이 존재하지 않는 경우 변수, 그리고 경우에
  2. 는, 스크립트는 실패 :

config.cfg :

CONFIGURED=yes 

test.sh :

#!/bin/sh 
$CFG=config.cfg 

echo Source command doesn't work here: 
[ -f $CFG ] && (source $CFG) || (echo $CFG doesnt exist; exit 127) 
echo $CONFIGURED 

echo ... but works here: 
source $CFG 
echo $CONFIGURED 

[...] 설명에 잘못된 점이 있습니까?

+1

'if ... then ... else ... fi'를 사용하지 않는 이유는 무엇입니까? – kennytm

+1

다음 행은'$ CFG = config.cfg'에 달러 기호가 없어야합니다. –

+2

게시물에 "bash"라는 태그가있는 동안 스크립트의 숨은 줄은 #!/bin/sh입니다. POSIX 쉘 (/ bin/sh)에는 "source"명령이 없습니다. 당신은 사용해야합니다. 대신./bin/sh가 bash 인 경우 이것을 알아 채지 못할 수도 있지만 대신 대시를 사용하면됩니다. FY – camh

답변

7

(...)은 별도의 서브 쉘에서 명령을 실행합니다. 가능한 경우 동일한 쉘에서 명령을 실행하려면 { ... ; }을 대신 사용하십시오.

+0

감사합니다 Ignacio! 그게 내가 필요한거야. [+] – Igor

+1

...이 특별한 경우에는'(...)'또는'{...; }' –