如何将程序或函数的输出通过管道传输到变量中?
例如,假设我有这个脚本:
function foobarize () {
sed \
-e "s|${foo}|${bar}|g" \
$1
}
echo foo | foobarize | set THIS_VARIABLE
显然设置 的值是行不通的THIS_VARIABLE
。
但如果我这样做:
THIS_VARIABLE=$(echo foo | foobarize)
...这也不起作用,因为它会删除任何尾随换行符。
那么如何在不使用反引号或 $() 的情况下获得foobarize
into的输出?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
看?