別のシェルで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)「並列に送ってください」ワイ「答えとして

おすすめ記事