# rsbash ![GitHub issues](https://img.shields.io/github/issues/ljelliot/rash) ![Cargo Downloads](https://img.shields.io/crates/d/rsbash) ![Cargo Latest version](https://img.shields.io/crates/v/rsbash)

rsbash makes running arbitrarily complex bash commands wonderfully easy!

With rsbash you can easily use all your favourite bash operators in your commands, redirects >, pipes |, subshells $(...), boolean logic && || etc!

Examples

Hello world!

```rust use rsbash::rash;

pub fn hello() -> Result<(), RashError> { let (retval, stdout) = rash!("echo -n 'Hello world!'")?; asserteq!(retval, 0); asserteq!(stdout, "Hello world!");

let (ret_val, stdout) =
    rash!("echo -n 'Hello ' | cat - && printf '%s' $(echo -n 'world!')")?;
assert_eq!(ret_val, 0);
assert_eq!(stdout, "Hello world!");

} ```

If you want to get really fancy ...

```rust use rsbash::rash;

const SCRIPT: &'static str = r#" s="*" for i in {1..3}; do echo "$s" s="$s *" done; "#;

pub fn script() -> Result<(), RashError> { // ... it prints a lovely triangle. let (retval, stdout) = rash!(SCRIPT)?; // * asserteq!(retval, 0); // * * asserteq!(stdout, "\n \n * *\n"); // * * *
} ```

License

MIT License - Copyright (c) 2023 Luke Elliot