Как сохранить данные, переданные функции, на стандартном вводе?

Как сохранить данные, переданные функции, на стандартном вводе?
> cat b.txt 
function first
    {
    foo=$(SOMEMAGIC)
    }

echo nyi | first 
> 

Вопрос: Как мы можем передать строку "nyi" переменной "foo" внутри функции? Так как же мы можем передать данные, которые были переданы функции через конвейер, переменной внутри функции?

решение1

Вы можете сделать одно из этого

Прочитать одну строку стандартного ввода

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

echo nyi | first

или

Прочитайте первый аргумент

function first
{
    foo="$1"
}

first nyi

решение2

Вы также можете использовать его catдля получения входных данных и последующего их возврата в задание.

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

Связанный контент