echo cart | { IFS= read -r spo; printf '%s\n' "$spo"; }
Sẽ hoạt động (lưu trữ đầu ra echo
mà không có ký tự dòng mới vào spo
biến) miễn là echo
đầu ra chỉ có một dòng.
Bạn luôn có thể làm:
assign() {
eval "$1=\$(cat; echo .); $1=\${$1%.}"
}
assign spo < <(echo cart)
Các giải pháp sau đây sẽ hoạt động trong bash
các tập lệnh, nhưng không phải tại bash
dấu nhắc:
shopt -s lastpipe
echo cat | assign spo
Hoặc là:
shopt -s lastpipe
whatever | IFS= read -rd '' spo
Để lưu trữ đầu ra của whatever
tối đa các ký tự NUL đầu tiên ( bash
dù sao các biến cũng không thể lưu trữ các ký tự NUL) $spo
.
Hoặc là:
shopt -s lastpipe
whatever | readarray -t spo
để lưu trữ đầu ra của whatever
trong $spo
mảng (một dòng trên mỗi phần tử mảng).