为什么这不工作?
NODE_ROOT=node0 INFRA_DOMAIN=example.com for host in $NODE_ROOT{1..3}.$INFRA_DOMAIN; do echo $host; done
我期待着:
node01.example.com node02.example.com node03.example.com
但是,我得到:
.example.com .example.com .example.com
我如何正确地做到这一点?
更换
$NODE_ROOT{1..3}.$INFRA_DOMAIN
通过
${NODE_ROOT}{1..3}.$INFRA_DOMAIN
你的脚本的问题是Bash无法正确解释$NODE_ROOT{1..3}
。 为了提供帮助,你需要把variables放在引号中, "
在任何情况下都被认为是”好的做法“,你也可以使用"${VARIABLE}"
types的语法来帮助Bash。
例如,
NODE_ROOT=node0 INFRA_DOMAIN=example.com for host in "$NODE_ROOT"{1..3}."$INFRA_DOMAIN"; do echo $host; done
要么
for host in "${NODE_ROOT}"{1..3}."$INFRA_DOMAIN"; do echo $host; done
进一步阅读:
你可以简单地修改你的脚本来阅读:
NODE_ROOT=node0 INFRA_DOMAIN=example.com for n in {1..3}; do echo ${NODE_ROOT}${n}.${INFRA_DOMAIN}; done