/var/tmp/add_user.bash
我的目标是从脚本创建脚本并从脚本/var/tmp/create_script_add_user.bash
运行期望脚本( ) 。add_user.bash
create_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“作为答案