2014-11-25 6 views
0

I가 매우 이상하게 작동하고 다음 스크립트 :배쉬 변수는 덮어 쓰기

192.168.0.2 192.168.0.3 

하지만 실제로보고 있어요 것은 :

#!/bin/bash 
function getip() 
{ 
    vagrant ssh $1 -c "ip address show eth1 | grep 'inet ' | sed -e 's/^.*inet //' -e 's/\/.*$//'" 
} 
node1=$(getip node1) 
node2=$(getip node2) 
echo $node1 $node2 

내가보고 기대하고하는 것은

192.168.0.3 

내가 마지막 라인을 변경하는 경우가 될 수 있습니다 :

,451,515,
echo $node1 
는 는

그때 얻을 :

192.168.0.2 

내 질문은, 무슨 일이 벌어지고 있는가? 나는 이것이 서브 쉘과 관련 될 수 있다고 말하는 몇 가지 답변을 찾았지만 함수를 사용하면 이것이 작동 할 것이라는 인상을 받았다. 어떤 아이디어?

+0

같은 스크립트는'$ node2'를 포함하지 않는 마지막 줄을 변경하고'192.168.0.2' 출력을 얻습니다. –

+2

이와 같이'result'를 통해 간접적 인 이유가 없습니다. 당신이'getip() {vagrant ssh ...; }'그런 다음 당신은'node1 = $ (getip node1); node2 = $ (getip 노드 2)'. –

+0

이 애매한, 포함되지 않은 setup.sh 대신'echo $ node1 $ node2'을 사용할 수 있습니까? 그것이 작동한다면, 그것은 깨진 setup.sh 일뿐입니다. BTW : Puppet이나 Chef 등을 ssh 호출 대신 설정하는 것을 좋아합니다.) – Wrikken

답변

1

텍스트 끝에 CR이 있습니다 ($node1). 그것을 출력하기 전에 제거하십시오.

+0

맞습니다. 감사합니다. – mikea