Linux

從其他 shell 執行期望腳本

  • April 4, 2013

我的目標是從腳本創建腳本並/var/tmp/add_user.bash/var/tmp/create_script_add_user.bash腳本執行期望腳本(add_user.bashcreate_script_add_user.bash

問題是,當我從 執行腳本add_user.bashcreate_script_add_user.bash,expect 會卡在這個問題上:

     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"

我找到了問題的解決方案

需要在沒有程序“&”的情況下執行/var/tmp/add_user.bash

例子

      #need sleep for 5 seconds

      sleep 5

      source /var/tmp/add_user.bash

現在期望得到“ n) ”字元串並發送“ y ”作為答案

引用自:https://unix.stackexchange.com/questions/71005