在 shell 中使用 expect 时,可以通过使用 expect_before 和 expect_after 来保证顺序执行。expect_before 指定在预期模式匹配之前需要匹配的模式,而 expect_after 指定在预期模式匹配之后需要匹配的模式。
通过将这些模式链接起来,你可以确保命令按预期的顺序执行,即使出现意外输出。
给你一个例子,注意发命令时加一个 : [code=BatchFile]#! /usr/bin/expect spawn su test expect { "Password:" { send -- "test "; }; "$" { send "ls / "; send "su root / "; expect { "Password:" { send -- "rootpw "; }; } exit; }; } [/code]