Minha pergunta é: pode/como um pipe compostos comandos ( { list; }
) ? Ver Anexo B. Anexo A dado para efeito de comparação.
Anexo A:
$ cat << EOF | xargs -n 1 echo
foo
bar
qux
EOF
foo
bar
qux
Anexo B:
$ cat << EOF | xargs -n 1 sh -c '{ var="$1"; echo "$var"; }'
foo
bar
qux
EOF
man sh
:
-c Read commands from the command_string operand
instead of from the standard input. Special parame‐
ter 0 will be set from the command_name operand and
the positional parameters ($1, $2, etc.) set from
the remaining argument operands.
O problema é que
sh -c "something"
precisa de outro argumento para se tornar$0
.Seu segundo exemplo não fornece um, então
$1
é uma string vazia e você obtém suas 3 linhas em branco. UsarNo roteiro
$0
estáinlineshellscript
. Normalmente eu usariash
em vez deinlineshellscript
.