echo 1 2 3 4 5|{
read line;
for i in $line;
do
echo -n "$((i * i)) ";
done;
echo
}
{} vytvoří seskupení. Místo toho byste pro to mohli vytvořit skript.
Napsal bych:
echo "1 2 3 4 5" | {
for N in $(cat); do
echo $((N ** 2))
done | xargs
}
Můžeme si to představit jako „mapu“ (funkční programování). Existuje mnoho způsobů, jak zapsat funkci "map" v bash (pomocí stdin, funkce args, ...), například:
map_stdin() {
local FUNCTION=$1
while read LINE; do
$FUNCTION $LINE
done
}
square() { echo "$(($1 * $1))"; }
$ echo "1 2 3 4 5" | xargs -n1 | map_stdin square | xargs
1 4 9 16 25
Jak odstranit vybraný text v editoru vi
Jak zjistit umístění aktuálně používaného konfiguračního souboru MySQL v linuxu