echo cart | { IFS= read -r spo; printf '%s\n' "$spo"; }
Funcionaria (armazena a saída de echo
sem o caractere de nova linha à direita na variável spo
), contanto que echo
produza apenas uma linha.
Você sempre pode fazer:
assign() {
eval "$1=\$(cat; echo .); $1=\${$1%.}"
}
assign spo < <(echo cart)
As soluções a seguir funcionariam em bash
scripts, mas não no prompt bash
:
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
variables não podem armazenar caracteres NUL) em $spo
.
Ou:
shopt -s lastpipe
whatever | readarray -t spo
para armazenar a saída de whatever
na matriz $spo
(uma linha por elemento da matriz).