从其他 shell 运行 Expect 脚本

从其他 shell 运行 Expect 脚本

/var/tmp/add_user.bash我的目标是从脚本创建脚本并从脚本/var/tmp/create_script_add_user.bash运行期望脚本( ) 。add_user.bashcreate_script_add_user.bash

问题是,当我add_user.bash从运行脚本时create_script_add_user.bash,expect 陷入了这个问题:

      Proceed? n) 

看起来expect无法从标准输出中看到问题。但是当我运行脚本时/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)“串并发送”y“作为答案

相关内容