Generated configuration text often starts as a set of small scalar values. Joining the values into one predictable line keeps the result easy to inspect.

Program

Play the script to choose a log level and see the generated configuration line.

level
config_line_template.sh
Replay: real traced execution (multi-file project)
#!/usr/bin/env bash

level="info"
workers=2
config="log_level=$level workers=$workers"
echo "$config"
#!/usr/bin/env bash

level="debug"
workers=2
config="log_level=$level workers=$workers"
echo "$config"
  1. level ← info

    3level="info"4workers=2
    values this stepinfolevel
  2. workers ← 2

    3level="info"4workers=25config="log_level=$level workers=$workers"
    values this step2workers
  3. config ← log_level=info workers=2

    4workers=25config="log_level=$level workers=$workers"6echo "$config"
    values this steplog_level=info workers=2configinfolevel2workers
  4. echo "$config"

    5config="log_level=$level workers=$workers"6echo "$config"
    outputlog_level=info workers=2
    values this steplog_level=info workers=2config
  1. level ← debug

    3level="debug"4workers=2
    values this stepdebuglevel
  2. workers ← 2

    3level="debug"4workers=25config="log_level=$level workers=$workers"
    values this step2workers
  3. config ← log_level=debug workers=2

    4workers=25config="log_level=$level workers=$workers"6echo "$config"
    values this steplog_level=debug workers=2configdebuglevel2workers
  4. echo "$config"

    5config="log_level=$level workers=$workers"6echo "$config"
    outputlog_level=debug workers=2
    values this steplog_level=debug workers=2config
config generation Scripts can generate small config fragments from known values.
scalar value Simple scalar values are easier to validate before writing a larger config.
quoted expansion Double quotes keep the generated line together while expanding variables.