2012-02-05 49 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返回内容。

相关问题