Bash 无法使用expect语句将数据添加到文件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

我试图创建一个脚本并运行一个程序,当这个程序运行时,它表示DB已经在运行,或者端口已经被另一个进程使用(表示已经在运行)

如果它已经在运行,我希望创建一个If-else语句,如果已经在运行,我希望将1添加到文件中,如果没有运行,则将0添加到文件中

这是我的名为test的tcl文件

    #!/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
变得非常强大的地方