do
for core
Run a closure, providing it with the pipeline input.
Signature
> do {flags} (closure) ...rest
Flags
--ignore-errors, -i
: ignore errors as the closure runs--ignore-shell-errors, -s
: ignore shell errors as the closure runs--ignore-program-errors, -p
: ignore external program errors as the closure runs--capture-errors, -c
: catch errors as the closure runs, and return them--env, -
: keep the environment defined inside the command
Parameters
closure
: the closure to run...rest
: the parameter(s) for the closure
Input/output types:
input | output |
---|---|
any | any |
Examples
Run the closure
> do { echo hello }
hello
Run a stored first-class closure
> let text = "I am enclosed"; let hello = {|| echo $text}; do $hello
I am enclosed
Run the closure and ignore both shell and external program errors
> do --ignore-errors { thisisnotarealcommand }
Run the closure and ignore shell errors
> do --ignore-shell-errors { thisisnotarealcommand }
Run the closure and ignore external program errors
> do --ignore-program-errors { nu --commands 'exit 1' }; echo "I'll still run"
Abort the pipeline if a program returns a non-zero exit code
> do --capture-errors { nu --commands 'exit 1' } | myscarycommand
Run the closure, with a positional parameter
> do {|x| 100 + $x } 77
177
Run the closure, with input
> 77 | do {|x| 100 + $in }
Run the closure and keep changes to the environment
> do --env { $env.foo = 'bar' }; $env.foo
bar