环境变量在命令中不起作用

Environment variable does not work inside command

我在这个奇怪的问题上被困了好几个小时。 我有一个正在执行以下命令的 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。命令前后。

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

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

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

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