问题描述
我创建了一个名为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"
顺便说一句,“截断”通常描述通过缩短末尾的字节而不是数据内部随机位置的字节来缩短数据。