Bash 无法使用expect语句将数据添加到文件Tcl
我试图创建一个脚本并运行一个程序,当这个程序运行时,它表示DB已经在运行,或者端口已经被另一个进程使用(表示已经在运行) 如果它已经在运行,我希望创建一个If-else语句,如果已经在运行,我希望将1添加到文件中,如果没有运行,则将0添加到文件中 这是我的名为test的tcl文件Bash 无法使用expect语句将数据添加到文件Tcl,bash,shell,centos,tcl,Bash,Shell,Centos,Tcl,我试图创建一个脚本并运行一个程序,当这个程序运行时,它表示DB已经在运行,或者端口已经被另一个进程使用(表示已经在运行) 如果它已经在运行,我希望创建一个If-else语句,如果已经在运行,我希望将1添加到文件中,如果没有运行,则将0添加到文件中 这是我的名为test的tcl文件 #!/usr/bin/expect -f set f [open a2.txt w] cd /opt/Uni-SON/ spawn ./Aprogram start expec
#!/usr/bin/expect -f
set f [open a2.txt w]
cd /opt/Uni-SON/
spawn ./Aprogram start
expect {
"Port is already being used by another process"
puts $f 1
puts "sadsadasdsaa"
}
puts $f 0
这是我的test2文件,它是bash文件
#!/bin/bash
./test
value=$(<a2.txt)
rm -rf a2.txt
if [ $value -eq 0 ]
then
echo Not being used
else
echo Already Being used
fi
#/bin/bash
/测试
value=$(此语句的问题:
expect {
"Port is already being used by another process"
puts $f 1
puts "sadsadasdsaa"
}
是因为它触发了一种情况,即您需要等待一系列的事情。您可能希望将其更改为:
expect {
"Port is already being used by another process" {
puts $f 1
puts "sadsadasdsaa"
}
}
也就是说,当找到该消息时,执行与之相关的小脚本(两个put
调用)。您也可以同时等待几件事情,这就是expect
变得非常强大的地方