我正在尝试创建一个脚本并运行一个程序,当该程序运行时,它说DB已在运行或Port已被另一个进程使用(意味着已在运行)
如果它已经在运行,我希望创建一个if- else语句,并希望在文件中添加1(如果已经在运行,但是如果没有运行,则在文件中添加0)
这是我的tcl文件,名为test
#!/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
错误:它没有向文件中添加数据,但是如果我将完全相同的语句puts $f 1
放在期望括号之外,它将起作用
怎么了?
我该怎么做?
答案 0 :(得分:1)
此语句的问题:
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"
}
}
这就是说,找到该消息后,执行与该消息关联的小脚本(两个puts
调用)。您也可以一次等待几件事,这就是expect
变得非常强大的地方了!