2016-02-01 40 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

我想保留空格。 –

相關問題