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
อาร์เรย์ (หนึ่งบรรทัดต่อองค์ประกอบอาร์เรย์)