使用 read 从 here-document 读取时如何保留前导空格?

How to preserve leading spaces whern reading from a here-document with read?

当使用以下

read -r -d '' VAR <<EOF
  first line
  second line
EOF
echo "$VAR"

第一行的前导空格被修剪:

first line
  second line

如何回显第一行中的前导空格并得到以下内容?

  first line
  second line

请注意,这是一个简化的示例,我需要使用 here document!

当您的 read 进入您指定为参数的变量时,IFS 中的前导字符和结束字符被视为分隔符,因此被删除。

第一个解决方案:暂时清空 IFS

IFS= read -r -d '' VAR <<EOF
  first line
  second line
EOF
printf '%s\n' "$VAR"

第二种解决方案(不可移植):不指定变量,Bash 将使用默认变量 REPLY

read -r -d '' <<EOF
  first line
  second line
EOF
printf '%s\n' "$REPLY"