bash/
bash.rs

1use rexpect::error::Error;
2use rexpect::spawn_bash;
3
4fn main() -> Result<(), Error> {
5    let mut p = spawn_bash(Some(1000))?;
6    p.execute("ping 8.8.8.8", "bytes")?;
7    p.send_control('z')?;
8    p.wait_for_prompt()?;
9    // bash writes 'ping 8.8.8.8' to stdout again to state which job was put into background
10    p.execute("bg", "ping 8.8.8.8")?;
11    p.wait_for_prompt()?;
12    p.send_line("sleep 0.5")?;
13    p.wait_for_prompt()?;
14    // bash writes 'ping 8.8.8.8' to stdout again to state which job was put into foreground
15    p.execute("fg", "ping 8.8.8.8")?;
16    p.send_control('c')?;
17    p.exp_string("packet loss")?;
18    Ok(())
19}