O critério não está bem definido, mas é assim que I faria:
hosts=(
box001:box001.domain.com
box002:box002.domain.com
box003:box003.domain.com
box004:box004.domain.com
box005:box005.domain.com
)
uri="http://server/api/duplicateobject.htm?id=2928&name=NEWSERVER&host=NEWHOSTNAME&targetid=3120"
for host in "${hosts[@]}"; do
IFS=":" names=( $host )
hosturi="${uri/NEWSERVER/${names[0]}}"
hosturi="${hosturi/NEWHOSTNAME/${names[1]}}"
echo "$hosturi"
done
Saídas:
http://server/api/duplicateobject.htm?id=2928&name=box001&host=box001.domain.com&targetid=3120
http://server/api/duplicateobject.htm?id=2928&name=box002&host=box002.domain.com&targetid=3120
http://server/api/duplicateobject.htm?id=2928&name=box003&host=box003.domain.com&targetid=3120
http://server/api/duplicateobject.htm?id=2928&name=box004&host=box004.domain.com&targetid=3120
http://server/api/duplicateobject.htm?id=2928&name=box005&host=box005.domain.com&targetid=3120
Vantagens:
- Mantém claro qual nome de servidor corresponde a qual fqdn.
- Sua pura festança & não usa nada externo.
.
Se o nome do servidor for sempre a primeira parte do fqdn, o array pode ser ainda mais simples e você pode ter o bash para descobrir o nome do servidor a partir do fqdn.