echo cart | { IFS= read -r spo; printf '%s\n' "$spo"; }
Funcionaria (armazenaria a saída echo
sem o caractere de nova linha à direita na spo
variável) desde que echo
emita apenas uma linha.
Você sempre pode fazer:
assign() {
eval "$1=\$(cat; echo .); $1=\${$1%.}"
}
assign spo < <(echo cart)
As seguintes soluções funcionariam em bash
scripts, mas não no bash
prompt:
shopt -s lastpipe
echo cat | assign spo
Ou:
shopt -s lastpipe
whatever | IFS= read -rd '' spo
Para armazenar a saída de whatever
até os primeiros caracteres NUL ( bash
variáveis não pode armazenar caracteres NUL de qualquer maneira) no $spo
.
Ou:
shopt -s lastpipe
whatever | readarray -t spo
para armazenar a saída de whatever
na $spo
matriz (uma linha por elemento da matriz).