echo cart | { IFS= read -r spo; printf '%s\n' "$spo"; }
Funcionaría (almacenar la salida de echo
sin el carácter de nueva línea final en la spo
variable) siempre que echo
solo salga una línea.
Siempre puedes hacer:
assign() {
eval "$1=\$(cat; echo .); $1=\${$1%.}"
}
assign spo < <(echo cart)
Las siguientes soluciones funcionarían en bash
scripts, pero no en el bash
indicador:
shopt -s lastpipe
echo cat | assign spo
O:
shopt -s lastpipe
whatever | IFS= read -rd '' spo
Para almacenar la salida de whatever
hasta los primeros caracteres NUL (las bash
variables no pueden almacenar caracteres NUL de todos modos) en $spo
.
O:
shopt -s lastpipe
whatever | readarray -t spo
para almacenar la salida de whatever
en la $spo
matriz (una línea por elemento de matriz).