Substituir
$NODE_ROOT{1..3}.$INFRA_DOMAIN
por
${NODE_ROOT}{1..3}.$INFRA_DOMAIN
Por que isso não funciona?
NODE_ROOT=node0
INFRA_DOMAIN=example.com
for host in $NODE_ROOT{1..3}.$INFRA_DOMAIN; do echo $host; done
Estou esperando:
node01.example.com
node02.example.com
node03.example.com
No entanto, recebo:
.example.com
.example.com
.example.com
Como faço isso corretamente?
O problema com o seu script é que o Bash não consegue interpretar $NODE_ROOT{1..3}
corretamente. Para ajudar, você precisa incluir a variável entre aspas, "
, que geralmente é aceita como 'boa prática' em qualquer caso. Você também pode usar a sintaxe "${VARIABLE}"
-type para ajudar o Bash também.
Por exemplo,
NODE_ROOT=node0
INFRA_DOMAIN=example.com
for host in "$NODE_ROOT"{1..3}."$INFRA_DOMAIN"; do echo $host; done
ou
for host in "${NODE_ROOT}"{1..3}."$INFRA_DOMAIN"; do echo $host; done
Leitura adicional:
Você pode simplesmente modificar seu script para ler:
NODE_ROOT=node0
INFRA_DOMAIN=example.com
for n in {1..3}; do echo ${NODE_ROOT}${n}.${INFRA_DOMAIN}; done