From a4c61ccccc5a83a8d9506d996fd695104ef14e2d Mon Sep 17 00:00:00 2001 From: Jonas Maier <> Date: Sat, 7 Mar 2026 13:22:18 +0100 Subject: can read cli args --- src/run/mod.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/run/mod.rs b/src/run/mod.rs index 4970792..f32007e 100644 --- a/src/run/mod.rs +++ b/src/run/mod.rs @@ -229,8 +229,24 @@ impl parse::Expander for Executor { type Error = ExecError; fn expand_var(&mut self, var: BString) -> Result { + if var.is_empty() { + return Err(ExecError::UnknownVariable(var)); + } + + if var[0].is_ascii_digit() { + if let Some(x) = String::from_utf8(var.clone()) + .ok() + .and_then(|x| x.parse::().ok()) + { + match std::env::args_os().skip(x).next() { + Some(arg) => return Ok(arg.into_encoded_bytes()), + None => (), + } + } + } + if let Some(val) = self.se.lock().unwrap().vars.get(&var) { - return Ok(val.clone()) + return Ok(val.clone()); } match std::env::var_os(OsStr::from_bytes(&var)) { -- cgit v1.2.3