Como armazenar os dados fornecidos a uma função na entrada padrão?

Como armazenar os dados fornecidos a uma função na entrada padrão?
> cat b.txt 
function first
    {
    foo=$(SOMEMAGIC)
    }

echo nyi | first 
> 

Pergunta: Como podemos atribuir a string “nyi” à variável “foo” dentro da função? Então, como podemos fornecer os dados que foram fornecidos à função via pipeline para uma variável dentro da função?

Responder1

Você pode fazer um desses

Leia uma linha de entrada padrão

function first
{
    IFS="" read -r foo
}

echo nyi | first

ou

Leia o primeiro argumento

function first
{
    foo="$1"
}

first nyi

Responder2

Você também pode usar catpara consumir a entrada e depois devolvê-la à atribuição.

$ first () { foo=$(cat); echo b${foo}c; }
$ echo nyi | first
bnyic

informação relacionada