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
내 질문은, 무슨 일이 벌어지고 있는가? 나는 이것이 서브 쉘과 관련 될 수 있다고 말하는 몇 가지 답변을 찾았지만 함수를 사용하면 이것이 작동 할 것이라는 인상을 받았다. 어떤 아이디어?
같은 스크립트는'$ node2'를 포함하지 않는 마지막 줄을 변경하고'192.168.0.2' 출력을 얻습니다. –
이와 같이'result'를 통해 간접적 인 이유가 없습니다. 당신이'getip() {vagrant ssh ...; }'그런 다음 당신은'node1 = $ (getip node1); node2 = $ (getip 노드 2)'. –
이 애매한, 포함되지 않은 setup.sh 대신'echo $ node1 $ node2'을 사용할 수 있습니까? 그것이 작동한다면, 그것은 깨진 setup.sh 일뿐입니다. BTW : Puppet이나 Chef 등을 ssh 호출 대신 설정하는 것을 좋아합니다.) – Wrikken