添加带变量的 YUM 存储库

Adding YUM Repos With Variables

我正在尝试像这样从命令行添加一个 YUM 存储库

cat > /etc/yum.repos.d/my_stable_repo.repo << EOF
[my_stable_repo]
name=Stable Repo
baseurl='https://myurl/$releasever/stable/Packages/'
enabled=1
gpgcheck=0
EOF

但是,当我这样做并查看 /etc/yum.repos.d/my_stable_repo.repo 时,我没有在 URL 中看到 $releasever。相反,/etc/yum.repos.d/my_stable_repo.repo 看起来像:

[my_stable_repo]
name=Stable Repo
baseurl='https://myurl//stable/Packages/'
enabled=1
gpgcheck=0

请注意,releasever 变量已被删除。我假设这是因为当我 运行 将内容从 shell 写入文件的命令时,linux 正在根据全局环境评估 $releasever 变量,看到它是空的,并将其替换为空字符串。

但实际上我只希望字符串 $releasever 位于 /etc/yum.repos.d/my_stable_repo.repo 中。所以文件应该如下所示:

[my_stable_repo]
name=Stable Repo
baseurl='https://myurl/$releasever/stable/Packages/'
enabled=1
gpgcheck=0

如何用 $releasever 从 shell?

中以纯文本形式写出这样的文件

TLDR:如何在不实际评估变量的情况下从命令行将一个看起来像其中包含变量(即 $releasever)的字符串写入文件?

将$更改为\$, 这样做:

cat > test_my_stable_repo.repo << EOF
[my_stable_repo]
name=Stable Repo
baseurl='https://myurl/$releasever/stable/Packages/'
enabled=1
gpgcheck=0
EOF

要防止 Bash 解释您的 cat 命令中的美元符号,只需将第一个 EOF 放在单引号中,如下所示:

cat > /etc/yum.repos.d/my_stable_repo.repo << 'EOF'
[my_stable_repo]
name=Stable Repo
baseurl='https://myurl/$releasever/stable/Packages/'
enabled=1
gpgcheck=0
EOF