2012-02-05 50 views
6

如何讀取文本文件並將其保存到bash中的變量中?我的代碼是在這裏:將文本文件保存在變量中bash

#!/bin/bash 
TEXT="dummy" 
echo "Please, enter your project name" 
read PROJECT_NAME 
mkdir $PROJECT_NAME 
cp -r -f /home/reza/Templates/Template\ Project/* $PROJECT_NAME 
cd $PROJECT_NAME/Latest 
TEXT = `cat configure.ac ` ## problem is here !!! 
CHANGED_TEXT=${TEXT//ProjectName/$PROJECT_NAME} 
echo $CHANGED_TEXT 
+0

[讀取文件並將其保存在使用shell腳本的變量中]的可能重複(http://stackoverflow.com/questions/7427262/read-a-file-and-save-it-in-variable-using- shell腳本) – 2014-03-24 09:01:51

回答

14

問題是你有一個額外的空間。分配操作需要零空間。然而,隨着bash可以使用:

TEXT=$(<configure.ac) 

你還需要確保你引用您的變量來保存換行符

CHANGED_TEXT="${TEXT//ProjectName/$PROJECT_NAME}" 
echo "$CHANGED_TEXT" 
+0

它的工作,但它有一個問題:線條丟失。所有的字符都變成只有1行,如[this](http://paste.kde.org/200162/)我該怎麼辦? – reza 2012-02-05 02:42:55

+1

@reza是否引用過我提到的變量? – SiegeX 2012-02-05 03:16:22

3

嘗試

TEXT=`cat configure.ac` 

這應該工作。

編輯:

爲了澄清,所不同的是在間距:把一個空間後TEXT可使bash試圖尋找它作爲一個命令。

1

對於執行命令和bash腳本返回的結果爲保存在一個變量中,例如,您必須將內部命令寫入var = $(command)。而且你不能在var,'='和$()之間給出空格。看看這個

TEXT=$('cat configure.ac') 

現在,echo $TEXT通過文件configure.ac返回內容。

相關問題