文本在变量中缩短

问题描述

我创建了一个名为birthday的以下文件,其中包含以下字符串:

Happy Birthday
Happy Birthday
Happy Birthday

当我使用命令cat birthday时,shell将以行距输出文本字符串

Happy Birthday
Happy Birthday
Happy Birthday

当我尝试声明一个这样的变量-并将其回显时,所有内容都在单个字符串中被截断。如何保持间距并将其传递给变量:

birthday=$(cat birthday)  && echo $birthday

输出

happy birthday happy birthday happy birthday

解决方法

不带引号的外壳将扩展变量并执行单词拆分。因此,它将6个参数发送到echo,该参数将所有参数打印成空格。

使用双引号防止单词分裂。

echo "$birthday"

顺便说一句,“截断”通常描述通过缩短末尾的字节而不是数据内部随机位置的字节来缩短数据。