bash脚本将整个文件读入带换行符的变量

时间:2016-02-01 06:07:21

标签: bash

我想在变量中读取整个文件。 例如我的文件是。

文件名:Q.txt

My name is Naeem Rehmat.
I am a student of FAST university.
Now i am in 4th semester.
I am learning bash script.
I have this problem.

代码:

text=$(cat Q.txt) 
echo $text

out put应该是这样的:

My name is Naeem Rehmat.
I am a student of FAST university.
Now i am in 4th semester.
I am learning bash script.
I have this problem.

1 个答案:

答案 0 :(得分:0)

据推测,问题是您的空白不正确。使用双引号:

echo "$text"

当您在没有引号的情况下编写echo $text时,bash会在生成命令之前计算字符串并执行所谓的“字段拆分”或“字拆分”。为了简化这种情况,假设text是字符串foo bar。 Bash将其分成两个“单词”,并将“foo”作为echo的第一个参数传递,将“bar”作为第二个参数传递。如果使用引号,bash只将一个参数传递给echo,并且该参数包含多个将打印echo的空格。

请注意,在文本分配中使用引号(即text="$(cat Q.txt)")可能是一种很好的风格,尽管没有必要,因为字段拆分不会在变量赋值中出现。