![](/img/trans.png)
[英]“command not found” errors in expect script executed by shell script
[英]Expect executed shell script don't exit
我使用 expect 來自動安裝軟件。 這是我腳本中的簡化期望代碼,但是當我將它直接粘貼到控制台時也會發生同樣的問題。
expect <<-EOS
#!/usr/bin/expect -f
set timeout -1
#run the command
spawn ./installSoftware.sh
expect "*?Question 1*" { send "N\r" }
expect -ex {Question 2 (default is [RANDOM STRING]):} { send "\r" }
puts "-------------- DONE 1 ---------------"
expect eof
puts "-------------- DONE 2 ---------------"
EOS
installSoftware.sh 是一個用於安裝軟件包和許多其他東西的大腳本。 該腳本在最后一行。
echo "----------- Done-----------"
installSoftware.sh 腳本在我直接執行時工作正常,但是當我將它與 expect 腳本一起使用時,它會運行並顯示最后一行的“完成”回顯,但隨后它卡住了。 我可以通過 HTOP 看到腳本的進程仍在運行,installSoftware.sh 腳本不會退出。
任何想法如何調試這個? 這更多是 installSoftware.sh 腳本的問題還是與 expect 相關的問題?
我可以說的是,如果我從 installSoftware.sh 中刪除這一行,它會按預期退出我的 installSoftware.sh,但這是在 hugh 腳本中間的某個地方。
rpm -Uvh --oldpackage --replacepkgs mysoftware.rpm
我發現了問題,問題出在腳本中的 RPM package 內。 這個例子復制了同樣的問題,並且將表明 spawn 任務將卡在最后,而沒有直接指示子進程。
期望.sh
#!/bin/bash
expect <<-EOS
#!/usr/bin/expect -f
set timeout -1
#run the command
spawn ./test.sh
expect eof
EOS
測試.sh
cp -f sleep.sh /tmp
chmod 777 /tmp/sleep.sh
su testuser -c "/tmp/sleep.sh &"
echo "--- DONE ---"
睡眠.sh
#!/bin/bash
while true
do
echo "loading..."
sleep 5
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.