mcpField
B
bash

bash

github.com/dralgorhythmDevelopment12862 installsUpdated 14w ago
Repository

About bash

A Bash scripting reference for developers, with reusable patterns for safer scripts, variables, control flow, functions, and error handling.

Key features

  1. 01Script template and safety settings
  2. 02Variable and default-value patterns
  3. 03File and string conditionals
  4. 04Functions and logging
  5. 05Cleanup traps and error handling

Use cases

  1. 01Starting a new Bash script
  2. 02Handling failures and cleanup
  3. 03Writing safer shell conditions

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/dralgorhythm/claude-agentic-framework --skill bash

After installing, type/bashin Claude Code to confirm it loaded.

Details

From the project README

Bash Scripting

Script Template

#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'

# Script description
# Usage: ./script.sh <arg1> <arg2>

readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

main() {
    local arg1="${1:-default}"

    # Script logic here
    echo "Running with: $arg1"
}

main "$@"

Safety Settings

set -e          # Exit on error
set -u          # Error on undefined variables
set -o pipefail # Catch pipe failures
set -x          # Debug: print commands

Variables

# Declaration
readonly CONST="immutable"
local var="function scoped"

# Default values
name="${1:-default}"      # Use default if unset
name="${1:?Error: missing}"  # Error if unset

# String operations
"${var^^}"    # Uppercase
"${var,,}"    # Lowercase
"${var#prefix}"  # Remove prefix
"${var%suffix}"  # Remove suffix

Conditionals

# File tests
[[ -f "$file" ]]  # Is file
[[ -d "$dir" ]]   # Is directory
[[ -r "$file" ]]  # Is readable
[[ -x "$file" ]]  # Is executable

# String tests
[[ -z "$var" ]]   # Is empty
[[ -n "$var" ]]   # Is not empty
[[ "$a" == "$b" ]] # Equals

# Numeric tests
(( num > 5 ))     # Greater than
(( num == 5 ))    # Equals

Functions

log() {
    local level="$1"
    local message="$2"
    echo "[$(date +'%Y-%m-%d %H:%M:%S')] [$level] $message" >&2
}

die() {
    log "ERROR" "$1"
    exit 1
}

require_command() {
    command -v "$1" >/dev/null 2>&1 || die "Required command not found: $1"
}

Error Handling

# Trap for cleanup
cleanup() {
    rm -rf "$TMP_DIR"
}
trap cleanup EXIT

# Catch errors
if ! result=$(some_command 2>&1); then
    die "Command failed: $result"
fi

Loops

# For loop
for item in "${array[@]}"; do
    echo "$item"
done

# While read
while IFS= read -r line; do
    echo "$line"
done < file.txt

# Process substitution
while read -r line; do
    echo "$line"
done < <(command)

Best Practices

  1. Quote all variables: "$var"
  2. Use [[ instead of [
  3. Use local in functions
  4. Use readonly for constants
  5. Always use set -euo pipefail
  6. Use shellcheck for linting

Comments

Markdown supported