环境变量在命令中不起作用
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"
我在这个奇怪的问题上被困了好几个小时。 我有一个正在执行以下命令的 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"