다른 쉘에서 Expect 스크립트 실행

다른 쉘에서 Expect 스크립트 실행

/var/tmp/add_user.bash내 목표는 스크립트에서 스크립트를 만들고 /var/tmp/create_script_add_user.bash스크립트에서 기대 script()를 실행하는 것입니다.add_user.bashcreate_script_add_user.bash

문제는 add_user.bashExpect 에서 스크립트를 실행할 때 create_script_add_user.bash다음 문제가 발생한다는 것입니다.

      Proceed? n) 

예상대로 표준 출력에서 ​​문제를 볼 수 없는 것 같습니다. 하지만 스크립트를 실행하면 /var/tmp/add_user.bash제대로 작동합니다.

다른 스크립트에서 실행될 수 없는 이유는 무엇입니까? 그리고 이 문제를 해결하는 방법은 무엇입니까?

콘텐츠/var/tmp/create_script_add_user.bash

   #!/bin/bash


   echo '#!/bin/bash


   add_user=`cat << EOF
   set timeout -1
   spawn /var/tmp/add_user.bash user_name=OBAMA
   expect n)   { send "yes\r" }
   expect eof
   EOF`

    /usr/local/bin/expect -c  "$add_user"

    '> /var/tmp/add_user.bash

    chmod +x /var/tmp/add_user.bash

    #need sleep for 5 seconds
    ( sleep 5 ; /var/tmp/add_user.bash ) &

콘텐츠/var/tmp/add_user.bash

 #!/bin/bash

 add_user=`cat << EOF
 set timeout -1
 spawn /var/tmp/add_user.bash user_name=OBAMA
 expect n)   { send "yes\r" }
 expect eof
 EOF`

 /usr/local/bin/expect -c  "$add_user"

답변1

문제의 해결책을 찾았습니다

" & " 프로세스를 사용하지 않고 /var/tmp/add_user.bash를 실행해야 합니다.

       #need sleep for 5 seconds

       sleep 5

       source /var/tmp/add_user.bash

이제 "를 얻을 것으로 예상됩니다.N)"병렬로 보내세요"와이"대답으로

관련 정보