2016-02-01 39 views
-2

我想读取变量中的整个文件。例如我的文件是 。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 

出认沽应该是这样的:

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. 
+0

也许在发布之前检查['bash' tag wiki](http://stackoverflow.com/tags/bash/info)。 – tripleee

+0

根据评论,我不认为链接的问题是重复的。我相信这里的问题是关于流程替换消除了尾随的换行符的事实,但它并不十分清楚。请注意,我编辑了问题,将样式添加到示例输入中,并且(我认为)Naeem围绕输入文件中的尾部空白行进行了旋转。 Naeem,你需要澄清,因为你的问题不清楚。 –

回答

0

想必问题是,你的空格是不正确。使用双引号:

echo "$text" 

当你写echo $text没有引号,bash的评估串并执行了被称为“场分裂”或生成命令之前“分词”。为了简化情况,假设text是字符串foo bar。 Bash将其分成两个“单词”,并将“foo”作为第一个参数传递给echo,并将“bar”作为第二个参数。如果你使用引号,bash只传递一个参数到echo,并且该参数包含多个回显将打印的空格。

请注意,在文本分配中也可以使用引号(即text="$(cat Q.txt)"),虽然它不是必需的,因为字段拆分不会在变量赋值中发生,这可能是很好的风格。

+0

感谢您的回复。但是这不显示在同一个犯人档案我想出来应该与新行。 –

+0

如果您使用进程替换(例如'$()')来读取文件,则尾随空格将从文件中被丢弃。如果你想保留它,你不能使用'$()'读取数据。但是,你真的需要澄清,如果这是你遇到的问题。 –

+0

我想保留空格。 –

相关问题