如何将程序或函数的输出通过管道传输到变量中?

如何将程序或函数的输出通过管道传输到变量中?

如何将程序或函数的输出通过管道传输到变量中?

例如,假设我有这个脚本:

function foobarize () {
    sed \
    -e "s|${foo}|${bar}|g" \
    $1
}

echo foo | foobarize | set THIS_VARIABLE

显然设置 的值是行不通的THIS_VARIABLE

但如果我这样做:

THIS_VARIABLE=$(echo foo | foobarize)

...这也不起作用,因为它会删除任何尾随换行符。

那么如何在不使用反引号或 $() 的情况下获得foobarizeinto的输出?THIS_VARIABLE

答案1

你可以做你说的事情:

THIS_VARIABLE=$(echo foo| foobarize; printf .)
THIS_VARIABLE=${THIS_VARIABLE%.}

这不会删除任何尾随换行符。如果有更多关于保存 THIS_VARIABLE 目的的信息,我也许可以提供进一步的帮助。

一些例子:

$ v=$(printf '0123456789' | sed -n p; printf .)
$ printf %s "${v%?}" | wc
0       1       10

$ v=$(printf '\n\n\n\n\n\n\n\n' | sed -n p; printf .)
$ printf %s "${v%?}" | wc
8       0       8

看?

相关内容