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