diff --git a/crates/nu-cmd-lang/src/core_commands/let_.rs b/crates/nu-cmd-lang/src/core_commands/let_.rs index 649035c8dd..6b020426a3 100644 --- a/crates/nu-cmd-lang/src/core_commands/let_.rs +++ b/crates/nu-cmd-lang/src/core_commands/let_.rs @@ -61,14 +61,7 @@ impl Command for Let { .expect("internal error: missing right hand side"); let block = engine_state.get_block(block_id); - let pipeline_data = eval_block( - engine_state, - stack, - block, - input, - call.redirect_stdout, - call.redirect_stderr, - )?; + let pipeline_data = eval_block(engine_state, stack, block, input, true, false)?; stack.add_var(var_id, pipeline_data.into_value(call.head)); Ok(PipelineData::empty()) } diff --git a/crates/nu-command/tests/commands/let_.rs b/crates/nu-command/tests/commands/let_.rs index 408dc5f6ff..5fa2fcc505 100644 --- a/crates/nu-command/tests/commands/let_.rs +++ b/crates/nu-command/tests/commands/let_.rs @@ -46,6 +46,20 @@ fn mut_pipeline_allows_in() { assert_eq!(actual.out, "21"); } +#[test] +fn let_pipeline_redirects_internals() { + let actual = nu!(r#"let x = echo 'bar'; $x | str length"#); + + assert_eq!(actual.out, "3"); +} + +#[test] +fn let_pipeline_redirects_externals() { + let actual = nu!(r#"let x = nu --testbin cococo 'bar'; $x | str length"#); + + assert_eq!(actual.out, "3"); +} + #[ignore] #[test] fn let_with_external_failed() {