是否有像setvar
这样的功能?
那么,我可以写这样的东西:
cat ... | grep ... | sed ... | setvar VALUES
echo "$VALUES" | do-anything
我不想写像:
VALUES="$(
cat ... | grep ... | sed ...
)"
echo "$VALUES" | do-anything
答案 0 :(得分:2)
我不确定您不想使用它的命令替换有什么问题。也许你想要的是一个功能。
some_cmd () {
cat ... | grep ... | sed ...
}
some_cmd | do-anything
在bash
4.2或更高版本中,运行shopt -s lastpipe
(并set +m
禁用监控模式后,如有必要),您可以使用
... | read VALUE
在VALUE
或
... | { read line1; read line2; }
捕获固定数量的行,或
... | readarray -t VALUES
捕获数组VALUES
中的多行输出,每个元素一行。
lastpipe
选项是必需的;否则,read
和readarray
设置的参数仅存在于为管道的最后一个元素创建的子流程中,并且不会在管道后面的shell中可用。