我在这个奇怪的问题上被困在了家里。 我有一个执行以下操作的bashscript:
TEST="12.x.x.x"
echo ${TEST}
给了我12.x.x.x
所以现在我想在我的命令中使用这个env var:
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
此命令的echo显示其中$ 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。在命令之前和之后。
答案 0 :(得分:2)
单引号可防止变量扩展。尝试使用双引号:
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
答案 1 :(得分:0)
变量在单引号''之间无效,你应该使用双引号“”,如下所示:
--hostnames="docker-registry.default.svc.cluster.local,$TEST"