Como posso enviar a saída de um programa ou função para uma variável?

2

Como posso enviar a saída de um programa ou função para uma variável?

Por exemplo, digamos que eu tenha este script:

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

echo foo | foobarize | set THIS_VARIABLE

Obviamente, não funcionará definir o valor de THIS_VARIABLE .

Mas se eu fizer isso:

THIS_VARIABLE=$(echo foo | foobarize)

... que não funciona porque remove qualquer nova linha.

Como faço para obter a saída de foobarize em THIS_VARIABLE sem usar carrapatos ou $ ()?

    
por CommaToast 09.09.2014 / 07:27

1 resposta

2

Você pode fazer o que você disse:

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

Isso não tira nenhuma novidade. Com um pouco mais de informação sobre o propósito de salvar o THIS_VARIABLE e talvez eu possa ajudar ainda mais.

Alguns exemplos:

$ 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

Veja?

    
por 09.09.2014 / 07:54