echo cart | { IFS= read -r spo; printf '%s\n' "$spo"; }
Akan bekerja (menyimpan output echotanpa karakter baris baru ke dalam spovariabel) selama echooutput hanya satu baris.
Anda selalu bisa melakukan:
assign() {
eval "$1=\$(cat; echo .); $1=\${$1%.}"
}
assign spo < <(echo cart)
Solusi berikut akan berfungsi dalam bashskrip, tetapi tidak pada bashprompt:
shopt -s lastpipe
echo cat | assign spo
Atau:
shopt -s lastpipe
whatever | IFS= read -rd '' spo
Untuk menyimpan output whateverhingga karakter NUL pertama ( bashvariabel tetap tidak dapat menyimpan karakter NUL) di $spo.
Atau:
shopt -s lastpipe
whatever | readarray -t spo
untuk menyimpan output whateverdalam $spo array (satu baris per elemen array).