【问题标题】:Environment variable does not work inside command环境变量在命令中不起作用
【发布时间】:2016-02-10 13:12:55
【问题描述】:

我在这个奇怪的问题上被困了好几个小时。 我有一个 bashscript 正在执行以下操作:

TEST="12.x.x.x"

echo ${TEST} 给了我 12.x.x.x

所以现在我想在我的命令中使用这个环境变量:

oadm ca create-server-cert --signer-cert=ca.crt \
    --signer-key=ca.key --signer-serial=ca.serial.txt \
    --hostnames='docker-registry.default.svc.cluster.local,$TEST' \
    --cert=registry.crt --key=registry.key

此命令的回显显示其中 $TEST 的内容。 但是该命令失败(它没有为我的 IP 创建 crt 和密钥)。 但它在我刚刚执行时有效:

oadm ca create-server-cert --signer-cert=ca.crt \
    --signer-key=ca.key --signer-serial=ca.serial.txt \
    --hostnames='docker-registry.default.svc.cluster.local,12.x.x.x' \
    --cert=registry.crt --key=registry.key

可能是什么问题? $TEST 的回声总是给我的 IP。命令前后。

【问题讨论】:

    标签: bash shell environment-variables


    【解决方案1】:

    单引号可防止变量扩展。尝试使用双引号:

    oadm ca create-server-cert --signer-cert=ca.crt \
        --signer-key=ca.key --signer-serial=ca.serial.txt \
        --hostnames="docker-registry.default.svc.cluster.local,${TEST}" \
        --cert=registry.crt --key=registry.key
    

    【讨论】:

      【解决方案2】:

      单引号''之间的变量无效,应使用双引号 "" ,如下所示:

      --hostnames="docker-registry.default.svc.cluster.local,$TEST"
      

      【讨论】:

        猜你喜欢
        • 2018-11-11
        • 1970-01-01
        • 1970-01-01
        • 2022-11-23
        • 2021-12-11
        • 2015-04-09
        • 1970-01-01
        • 2021-11-13
        • 2020-11-25
        相关资源
        最近更新 更多