diff --git a/crates/nu-command/src/commands/filters/all.rs b/crates/nu-command/src/commands/filters/all.rs index 79a33676ea..81e104196c 100644 --- a/crates/nu-command/src/commands/filters/all.rs +++ b/crates/nu-command/src/commands/filters/all.rs @@ -96,7 +96,11 @@ fn all(args: CommandArgs) -> Result { let result = args.input.fold(init, move |acc, row| { let condition = condition.clone(); let ctx = ctx.clone(); - ctx.scope.add_var("$it", row); + if let Some(positional) = all_args.predicate.block.params.positional.get(0) { + ctx.scope.add_var(positional.0.name(), row); + } else { + ctx.scope.add_var("$it", row); + } let condition = evaluate_baseline_expr(&condition, &ctx); diff --git a/crates/nu-command/tests/commands/all.rs b/crates/nu-command/tests/commands/all.rs index 4634cb0bfe..2012ff0de6 100644 --- a/crates/nu-command/tests/commands/all.rs +++ b/crates/nu-command/tests/commands/all.rs @@ -19,6 +19,34 @@ fn checks_all_rows_are_true() { }) } +#[test] +fn checks_all_rows_are_false_with_param() { + Playground::setup("all_test_1", |_, nu| { + assert_that!( + nu.pipeline(&input( + r#" + [1, 2, 3, 4] | all? { |a| $a >= 5 } + "# + )), + says().stdout("false") + ); + }) +} + +#[test] +fn checks_all_rows_are_true_with_param() { + Playground::setup("all_test_1", |_, nu| { + assert_that!( + nu.pipeline(&input( + r#" + [1, 2, 3, 4] | all? { |a| $a < 5 } + "# + )), + says().stdout("true") + ); + }) +} + #[test] fn checks_all_columns_of_a_table_is_true() { Playground::setup("any_test_1", |_, nu| {