Wie speichert man die einer Funktion übergebenen Daten auf der Standardeingabe?

Wie speichert man die einer Funktion übergebenen Daten auf der Standardeingabe?
> cat b.txt 
function first
    {
    foo=$(SOMEMAGIC)
    }

echo nyi | first 
> 

Frage: Wie können wir die Zeichenfolge „nyi“ an die Variable „foo“ innerhalb der Funktion übergeben? Wie können wir also die Daten, die der Funktion über eine Pipeline übergeben wurden, an eine Variable innerhalb der Funktion übergeben?

Antwort1

Sie können eines davon tun

Eine Zeile der Standardeingabe lesen

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

echo nyi | first

oder

Lesen Sie das erste Argument

function first
{
    foo="$1"
}

first nyi

Antwort2

Sie können catdie Eingabe auch verwenden und sie dann in die Zuweisung zurückgeben.

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

verwandte Informationen