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 масиві (один рядок на елемент масиву).