Back to Skills

bash-53-features

verified

Bash 5.3 new features and modern patterns (2025)

View on GitHub

Marketplace

claude-plugin-marketplace

JosiahSiegel/claude-plugin-marketplace

Plugin

bash-master

Repository

JosiahSiegel/claude-plugin-marketplace
7stars

plugins/bash-master/skills/bash-53-features/SKILL.md

Last Verified

January 20, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/JosiahSiegel/claude-plugin-marketplace/blob/main/plugins/bash-master/skills/bash-53-features/SKILL.md -a claude-code --skill bash-53-features

Installation paths:

Claude
.claude/skills/bash-53-features/
Powered by add-skill CLI

Instructions

## ๐Ÿšจ CRITICAL GUIDELINES

### Windows File Path Requirements

**MANDATORY: Always Use Backslashes on Windows for File Paths**

When using Edit or Write tools on Windows, you MUST use backslashes (`\`) in file paths, NOT forward slashes (`/`).

**Examples:**
- โŒ WRONG: `D:/repos/project/file.tsx`
- โœ… CORRECT: `D:\repos\project\file.tsx`

This applies to:
- Edit tool file_path parameter
- Write tool file_path parameter
- All file operations on Windows systems


### Documentation Guidelines

**NEVER create new documentation files unless explicitly requested by the user.**

- **Priority**: Update existing README.md files rather than creating new documentation
- **Repository cleanliness**: Keep repository root clean - only README.md unless user requests otherwise
- **Style**: Documentation should be concise, direct, and professional - avoid AI-generated tone
- **User preference**: Only create additional .md files when user specifically asks for documentation


---

# Bash 5.3 Features (2025)

## Overview

Bash 5.3 (released July 2025) introduces significant new features that improve performance, readability, and functionality.

## Key New Features

### 1. In-Shell Command Substitution

**New: ${ command; } syntax** - Executes without forking a subshell (runs in current shell context):

```bash
# OLD way (Bash < 5.3) - Creates subshell
output=$(expensive_command)

# NEW way (Bash 5.3+) - Runs in current shell, faster
output=${ expensive_command; }
```

**Benefits:**
- No subshell overhead (faster)
- Preserves variable scope
- Better performance in loops

**Example:**
```bash
#!/usr/bin/env bash

# Traditional approach
count=0
for file in *.txt; do
    lines=$(wc -l < "$file")  # Subshell created
    ((count += lines))
done

# Bash 5.3 approach (faster)
count=0
for file in *.txt; do
    lines=${ wc -l < "$file"; }  # No subshell
    ((count += lines))
done
```

### 2. REPLY Variable Command Substitution

**New: ${| command; } syntax** - Stores result in REPLY variable:

`

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
9577 chars