Template Generation
Loop Template
Generate Names
A loop can apply the same naming template to several inputs. The prefix changes the generated names while the list stays fixed.
Program
Play the script to choose the prefix and see the generated names.
loop_template_names.sh
Replay: real traced execution (multi-file project)
#!/usr/bin/env bash
prefix="svc"
names=("api" "web")
generated=""
for name in "${names[@]}"; do
generated+="$prefix-$name "
done
generated="${generated% }"
echo "$generated"
#!/usr/bin/env bash
prefix="job"
names=("api" "web")
generated=""
for name in "${names[@]}"; do
generated+="$prefix-$name "
done
generated="${generated% }"
echo "$generated"
prefix ← svc
3prefix="svc"4names=("api" "web")values this stepsvcprefixnames ← api, web
3prefix="svc"4names=("api" "web")5generated=""values this stepapi, webnamesgenerated ← (empty)
4names=("api" "web")5generated=""6for name in "${names[@]}"; dovalues this step(empty)generatedgenerated ← svc-api
6for name in "${names[@]}"; do7 generated+="$prefix-$name "8donevalues this step(empty) → svc-api generatedapinamesvcprefixgenerated ← svc-api svc-web
6for name in "${names[@]}"; do7 generated+="$prefix-$name "8donevalues this stepsvc-api → svc-api svc-web generatedwebnamesvcprefixgenerated ← svc-api svc-web
8done9generated="${generated% }"10echo "$generated"values this stepsvc-api svc-web → svc-api svc-webgeneratedecho "$generated"
9generated="${generated% }"10echo "$generated"outputsvc-api svc-webvalues this stepsvc-api svc-webgenerated
prefix ← job
3prefix="job"4names=("api" "web")values this stepjobprefixnames ← api, web
3prefix="job"4names=("api" "web")5generated=""values this stepapi, webnamesgenerated ← (empty)
4names=("api" "web")5generated=""6for name in "${names[@]}"; dovalues this step(empty)generatedgenerated ← job-api
6for name in "${names[@]}"; do7 generated+="$prefix-$name "8donevalues this step(empty) → job-api generatedapinamejobprefixgenerated ← job-api job-web
6for name in "${names[@]}"; do7 generated+="$prefix-$name "8donevalues this stepjob-api → job-api job-web generatedwebnamejobprefixgenerated ← job-api job-web
8done9generated="${generated% }"10echo "$generated"values this stepjob-api job-web → job-api job-webgeneratedecho "$generated"
9generated="${generated% }"10echo "$generated"outputjob-api job-webvalues this stepjob-api job-webgenerated
loop template
The loop applies the same text pattern to each array value.
accumulator
`generated` collects the output as each row is processed.
trim suffix
`${generated% }` removes one trailing space from the finished string.