Development record
The shell guard skipped the body of a here-document whose delimiter is unquoted as text, but bash expands that body before the command reads it: a command substitution in it (dollar-paren, backticks, or one inside an arithmetic expansion) runs. Every blocker allowed when its command stood in such a substitution in the body, alone, behind a redirection or a list operator, or inside a substitution of its own (review4-guard finding 1). A quoted, escaped or partly escaped delimiter keeps the body literal.
issueresolvedmajoriss-2609252120204766
The shell guard skipped the body of a here-document whose delimiter is unquoted as text, but bash expands that body before the command reads it: a command substitution in it (dollar-paren, backticks, or one inside an arithmetic expansion) runs. Every blocker allowed when its command stood in such a substitution in the body, alone, behind a redirection or a list operator, or inside a substitution of its own (review4-guard finding 1). A quoted, escaped or partly escaped delimiter keeps the body literal.
Grounds
- pursued: every blocker run from an unquoted body blocks and a quoted, escaped or partly escaped body allows; a blocked command in a body substitution that allows, or an everyday heredoc (a commit message with apostrophes, a date in a document) that blocks, would show it wrong
Frontmatter
| id | iss-2609252120204766 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | major |
.abcd/work/issues/resolved/iss-2609252120204766-the-shell-guard-skipped-an-unquoted-here.md
open on GitHub ↗ · commit history ↗