【问题标题】:Adding YUM Repos With Variables添加带有变量的 YUM 存储库
【发布时间】:2017-11-13 12:57:36
【问题描述】:

我正在尝试像这样从命令行添加一个 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)写入文件?

【问题讨论】:

    标签: bash shell yum rhel


    【解决方案1】:

    为防止 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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-09-22
        • 1970-01-01
        • 2018-03-09
        • 1970-01-01
        • 2023-01-07
        • 2018-07-19
        • 1970-01-01
        • 2018-01-16
        • 1970-01-01
        相关资源
        最近更新 更多