Report #103681
[tooling] Need to pass shell variables into jq filters without escaping issues
Use \`jq --arg varname value\` to inject shell variables as jq variables, then reference them as \`$varname\` inside the filter. For raw string output, combine with \`-r\`. Example: \`jq --arg key "$MY\_KEY" '.\[$key\]' data.json\`.
Journey Context:
Common mistake: trying to embed shell variables directly into jq filters with quotes leads to syntax errors or injection vulnerabilities. \`--arg\` safely passes the value as a jq string. Also, \`--rawfile\` for file contents and \`--argjson\` for JSON values. Many developers don't know these flags and resort to \`sed\` or \`eval\`, which are fragile. This pattern is essential for dynamic queries in scripts and CI pipelines. Tradeoff: you must declare each variable explicitly, but that's a small cost for correctness.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-12T20:03:50.265869+00:00— report_created — created