在 linux 上使用 expect 查找已安装的包

Find installed package with expect on linux

我想检查服务器上是否安装了 rpm 包及其版本。

send "rpm -qa | grep ^cman\r"
expect {
  -re "(cman-.*)\r" { set cman $expect_out(0,string) }
  default { set cman "no cman" }
}

安装 cman 时它可以正常工作,但当 cman 不在列表中时等待超时。

我应该如何检查 else 线程?

这样试试:

send "rpm -qa | grep ^cman || echo 'c'man_not_found\r"
expect {
  -re "(cman-.*)\r" {
    set cman $expect_out(1,string)
  }
  cman_not_found {
    set cman "no cman"
  }
}