没有正确保存$的BASH脚本

时间:2016-12-20 10:19:43

标签: linux bash shell variables

我有一个bash脚本,我运行以下sudo ./test

bash脚本需要创建一个repo,并将以下数据保存在其中。

所以,这是bash脚本:

#!/bin/bash
echo "Inputing data... " 
echo "[mongodb-org-3.2]
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/" > /etc/yum.repos.d/mongodb-org.repo 

但是,因为发布者前面有一个$,脚本会保存文本,如下所示:

[mongodb-org-3.2]
baseurl=https://repo.mongodb.org/yum/redhat//mongodb-org/3.2/x86_64/

而不是这样:

[mongodb-org-3.2]
baseurl=https://repo.mongodb.org/yum/redhat/$c/mongodb-org/3.2/x86_64/

我知道如何将$releasever视为文本而不是变量吗?

我尝试在它周围加上双引号但是仍然不起作用。我是bash脚本的新手,所以任何帮助都会受到赞赏。

谢谢!

2 个答案:

答案 0 :(得分:0)

使用单引号来防止变量扩展。

使用双引号:

sh-4.1$ baseurl1="https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/"
sh-4.1$ echo $baseurl1
https://repo.mongodb.org/yum/redhat//mongodb-org/3.2/x86_64/

使用单引号:

sh-4.1$ baseurl2='https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/'
sh-4.1$ echo $baseurl2
https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/

答案 1 :(得分:0)

使用反斜杠字符表示您不想调用bash变量,例如:

echo \$HELLO