Skip to content

Fix macOS/BSD Bash 3.2 compatibility issues in shell scripts#3250

Open
aoright wants to merge 1 commit into
github:mainfrom
aoright:fix/bash-compatibility
Open

Fix macOS/BSD Bash 3.2 compatibility issues in shell scripts#3250
aoright wants to merge 1 commit into
github:mainfrom
aoright:fix/bash-compatibility

Conversation

@aoright

@aoright aoright commented Jun 30, 2026

Copy link
Copy Markdown

This resolves 19 test failures when running the test suite on macOS. There were two main issues: 1. Syntax errors in update-agent-context.sh caused by nested double-quoted command substitutions with tr '' character escaping, causing mismatched single quotes in Bash 3.2. 2. Bad substitutions in feature-naming scripts caused by using Bash 4.0+ uppercase parameter expansion ${word^^} which is unsupported in macOS default Bash 3.2. The fix replaces the expansion with standard tr '[:lower:]' '[:upper:]' and cleans up nested double-quoted assignments.

This resolves 19 test failures when running the test suite on macOS by converting the Bash 4.0+ uppercase parameter expansion ${word^^} to standard tr, and removing outer double quotes from command substitutions with heredocs to prevent syntax errors due to collapsed backslashes escaping single quotes in Bash 3.2.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves macOS (BSD) Bash 3.2 compatibility for Spec Kit shell scripts by removing Bash 4+ parameter expansions and simplifying command-substitution quoting that can break in Bash 3.2.

Changes:

  • Replaced Bash 4+ uppercase expansion (${word^^}) with tr '[:lower:]' '[:upper:]' in branch-name generation logic.
  • Simplified several nested, double-quoted command substitutions in update-agent-context.sh to avoid Bash 3.2 parsing issues.
Show a summary per file
File Description
scripts/bash/create-new-feature.sh Updates acronym/word handling in branch-name generation to avoid Bash 4-only ${var^^}.
extensions/git/scripts/bash/create-new-feature-branch.sh Mirrors the same macOS-safe uppercase handling in the git extension’s branch-name generator.
extensions/agent-context/scripts/bash/update-agent-context.sh Adjusts command substitution quoting/assignments to prevent Bash 3.2 syntax errors when parsing nested substitutions.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 3/3 changed files
  • Comments generated: 1
  • Review effort level: Low

if [ ${#word} -ge 3 ]; then
meaningful_words+=("$word")
elif echo "$description" | grep -q "\b${word^^}\b"; then
elif echo "$description" | grep -q "\b$(echo "$word" | tr '[:lower:]' '[:upper:]')\b"; then

@mnriem mnriem left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please address Copilot feedback. If not applicable, please explain why. And please resolve conflicts

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants