CSV-style rows are useful when values are simple and commas are controlled. A header makes the column order explicit.

Program

Play the script to choose a count and see the generated CSV row.

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

count=3
name="worker"
header="name,count"
row="$name,$count"
echo "$header"
echo "$row"
#!/usr/bin/env bash

count=5
name="worker"
header="name,count"
row="$name,$count"
echo "$header"
echo "$row"
  1. count ← 3

    3count=34name="worker"
    values this step3count
  2. name ← worker

    3count=34name="worker"5header="name,count"
    values this stepworkername
  3. header ← name,count

    4name="worker"5header="name,count"6row="$name,$count"
    values this stepname,countheader
  4. row ← worker,3

    5header="name,count"6row="$name,$count"7echo "$header"
    values this stepworker,3rowworkername3count
  5. echo "$header"

    6row="$name,$count"7echo "$header"8echo "$row"
    outputname,count
    values this stepname,countheader
  6. echo "$row"

    7echo "$header"8echo "$row"
    outputworker,3
    values this stepworker,3row
  1. count ← 5

    3count=54name="worker"
    values this step5count
  2. name ← worker

    3count=54name="worker"5header="name,count"
    values this stepworkername
  3. header ← name,count

    4name="worker"5header="name,count"6row="$name,$count"
    values this stepname,countheader
  4. row ← worker,5

    5header="name,count"6row="$name,$count"7echo "$header"
    values this stepworker,5rowworkername5count
  5. echo "$header"

    6row="$name,$count"7echo "$header"8echo "$row"
    outputname,count
    values this stepname,countheader
  6. echo "$row"

    7echo "$header"8echo "$row"
    outputworker,5
    values this stepworker,5row
CSV Comma-separated output uses a fixed column order.
header A header line documents the meaning of each column.
simple values This pattern is safest when values do not contain commas or newlines.