Process Expansions
Ion supports two forms of process expansions: string-based process expansions ($()) that are commonly found in POSIX shells, and array-based process expansions (@()), a concept borrowed from the Oil shell. Where a string-based process expansion will execute a command and return a string of that command's standard output, an array-based process expansion will split the output into an array delimited by whitespaces.
let string = $(cmd args...)
let array = [ @(cmd args...) ]
NOTES:
- To split outputs by line, see @lines($(cmd)).
@(cmd)
is equivalent to @split($(cmd)).
mkdir -p _tmp _tmp/t1 _tmp/t2
cd _tmp
let res = $(ls)
let res2 = [ @(ls) ]
echo $res # output the string
echo @res2 # output the array
cd ..
rm -fr _tmp
t1
t2
t1 t2