set -o noglob # not needed in zsh which does only split upon unquoted
# command substitution. zsh also splits on NULs by default
# whilst other shells either removes them or choke on them.
array=(
$(
for value in 10 5 27 33 14 25
do
echo "$value"
done
)
)
使用zsh/ bash/ ksh93,您还可以执行以下操作:
array=()
for value in 10 5 27 33 14 25
do
array+=( "$(cmd "$value")" )
done
循环与任何其他命令没有什么不同
for
,您将使用命令替换:将整个输出减去最后一个添加的最后一个换行符
echo
作为字符串存储到标量$variable
变量中。然后你会做例如:
或者:
在
bash
shell 中,您还可以将输出的每一行存储到数组的一个元素中:要将输出的每个空格/制表符/换行符分隔的单词(假设默认值
$IFS
)存储到一个数组中,您可以使用 split+glob 运算符并禁用 glob 部分使用
zsh
/bash
/ksh93
,您还可以执行以下操作:构建阵列。
然后在所有这些中,你会做:
将数组的所有元素作为参数传递给
futher-processing
or:要将每个元素打印在一行上,通过管道传送到
further-processing
但是请注意,如果数组为空,则仍会打印空行。您可以通过使用
print -rC1 --
而不是printf '%s\n'
在zsh
任何类似 Bourne 的 shell 中来避免这种情况,定义一个函数,例如: