프로그램이나 함수의 출력을 변수로 파이프하는 방법은 무엇입니까?

프로그램이나 함수의 출력을 변수로 파이프하는 방법은 무엇입니까?

프로그램이나 함수의 출력을 변수로 파이프하는 방법은 무엇입니까?

예를 들어 다음 스크립트가 있다고 가정해 보겠습니다.

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

바라보다?

관련 정보