프로그램이나 함수의 출력을 변수로 파이프하는 방법은 무엇입니까?
예를 들어 다음 스크립트가 있다고 가정해 보겠습니다.
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
바라보다?