1
일부 bash 스크립트를 자동화하기 위해 expect를 사용하고 있습니다. 모든 것은 내가 소스 스크립트를 실행할 필요가있을 때까지 간다. 그러면이 오류가 발생합니다 :expect를 사용하여 소스 쉘 스크립트를 생성해야합니다.
나는 기본적인 방법으로 (spawn/expect/send/interact)를 사용합니다. 문제는 산란과 함께입니다. 'NAME'으로 환경 가치와 수출 에코의 이름을 읽을
스크립트 : 나를 아주 쉬운 예를 보여 드리죠
/home/edu/scripts [] cat setNAME.sh
#!/bin/bash
echo "Your name?"
read name
export NAME=$name
echo "Provided NAME is $name"
당신은 입력 값 것 '소스'를 실행하면 환경 변수로 내보낼 수 있습니다. 그냥 내가 필요한 :
/home/edu/scripts [] source setNAME.sh
Your name?
Dennis
Provided NAME is Dennis
/home/edu/scripts [] echo $NAME
Dennis
하자의 설정, 상호 작용을 방지하기 위해 기대 사용하는 '에듀'는 이름으로 :
/home/edu/scripts [] cat setNAME.exp
#!/usr/bin/expect
spawn setNAME.sh
expect "Your name?"
send edu\r
interact
/home/edu/scripts [] setNAME.exp
spawn setNAME.sh
Your name?
edu
Provided NAME is edu
/home/edu/scripts [] echo $NAME
Dennis
그러나 이름, 분명히, 여전히 데니스입니다 : '에듀'가 표시됩니다 at sh 스크립트는 출력하지만 NAME으로 내 보내지는 않습니다. 왜냐하면 expect 스크립트는 setNAME.sh 스크립트를 소스없이 (또는 스크립트 전에 점으로) 생성하기 때문입니다.
문제는 처음에 오류가 발생했기 때문에이 작업을 수행 할 수 없다는 것입니다.
해결할 수있는 아이디어가 있습니까? 내 경우
스크립트는 훨씬 더 복잡하고 다른 솔루션이 같은 예를 들어 것들에 대한, 또한 무효입니다 :
내가 기대 사용하려고 해요 이유입니다source script.sh << EOF
<option1>
<option2>
...
EOF
...
고마워요!
훌륭한 첫 번째 질문은, 미안하지만, 전문가는 아니지만'spawn source setname.csh'을 시도 했습니까? 행운을 빕니다. – shellter
물론 처음으로 내가 한 일은 (미안하지만 잘 설명하지 못했습니다). 나는 그 이유를 이해하지 못하지만, 분명히 이유가있다. 나도 따옴표로 시도 : "소스