bash:将文件内容读入变量,内容包含特殊字符:`*`

时间:2014-02-17 04:58:19

标签: bash

我有一个名为content.txt的文件:

$ cat content.txt

输出:

*
1
2

在同一目录中,我有一个bash文件:read.sh来阅读content.txt的内容

$ cat read.sh

输出:

content=`cat content.txt`
echo $content

我们可以看到*中有content.txt。所以,当我运行reah.sh时:

$ sh read.sh 

输出:

content.txt read.sh 1 2

似乎已经解析了*

如何获取content.txt的内容?任何帮助都会很棒。

2 个答案:

答案 0 :(得分:3)

*字符是通配符的通配符,可扩展为当前目录中的文件名,如果您希望仅echo字符,则必须引用或转义。

您可以使用read内置命令从文件中读取。

while read content; do
    echo "$content"
done < content.txt

答案 1 :(得分:0)

似乎变量在echo时展开。所以只需将read.sh更改为:

content=`cat content.txt`
echo "$content"

然后我得到了我想要的东西。谢谢,大家。

更新

http://www.shellcheck.net/这个,可以查看shell脚本并给出一些建议。