echo cart | { IFS= read -r spo; printf '%s\n' "$spo"; }
Будет работать (сохранять выходные данные echo
без завершающего символа новой строки в spo
переменной), пока выводится echo
только одна строка.
Вы всегда можете сделать:
assign() {
eval "$1=\$(cat; echo .); $1=\${$1%.}"
}
assign spo < <(echo cart)
Следующие решения будут работать в bash
сценариях, но не по bash
приглашению:
shopt -s lastpipe
echo cat | assign spo
Или:
shopt -s lastpipe
whatever | IFS= read -rd '' spo
Для сохранения вывода whatever
до первых символов NUL ( bash
переменные не могут хранить символы NUL) в $spo
.
Или:
shopt -s lastpipe
whatever | readarray -t spo
хранить выходные данные whatever
в $spo
массиве (одна строка на элемент массива).