プログラムや関数の出力を変数にパイプする方法は?

プログラムや関数の出力を変数にパイプする方法は?

プログラムや関数の出力を変数にパイプする方法は?

たとえば、次のスクリプトがあるとします。

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

願いより?

関連情報