smithery/pluginagentmarketplace

bash-basics

Production-grade Bash fundamentals - syntax, variables, control flow, functions

Installation

$ npx skills add smithery/pluginagentmarketplace --skill bash-basics

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/pluginagentmarketplace · top by installs.

npx skills add smithery/pluginagentmarketplace

Browse all from smithery/pluginagentmarketplace

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Version2.0.0

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,169 B
  • docs SUMMARY.md 98 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Bash Basics Skill

Master the fundamentals of Bash shell scripting with production-ready patterns

Learning Objectives

After completing this skill, you will be able to:

  • Write syntactically correct Bash scripts
  • Use variables with proper quoting and expansion
  • Implement control flow structures (if, case, loops)
  • Design reusable functions with error handling
  • Apply the strict mode (set -euo pipefail)

Prerequisites

  • Basic command line familiarity
  • Text editor (vim, nano, or IDE)
  • Linux/macOS/WSL environment
  • Bash 4.0+ installed

Core Concepts

1. Script Structure

#!/usr/bin/env bash
# Script: example.sh
# Purpose: Demonstrate basic structure
# Usage: ./example.sh [options]

set -euo pipefail    # Strict mode
IFS=$'\n\t'          # Safe IFS

# Constants
readonly VERSION="1.0.0"

# Main logic
main() {
    echo "Hello, World!"
}

main "$@"

2. Variables

# Declaration
name="value"                    # String
declare -i count=0              # Integer
declare -r CONST="immutable"    # Readonly
declare -a array=("a" "b" "c")  # Array
declare -A map=([key]="val")    # Associative array

# Expansion
echo "${name}"                  # Basic
echo "${name:-default}"         # Default if unset
echo "${name:?error msg}"       # Error if unset
echo "${#name}"                 # Length
echo "${name^^}"                # Uppercase
echo "${name,,}"                # Lowercase

3. Control Structures

# Conditionals
if [[ -f "$file" ]]; then
    echo "File exists"
elif [[ -d "$file" ]]; then
    echo "Directory exists"
else
    echo "Not found"
fi

# Case statements
case "$option" in
    start) do_start ;;
    stop)  do_stop ;;
    *)     echo "Unknown" ;;
esac

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

while read -r line; do
    process "$line"
done < file.txt

4. Functions

function greet() {
    local name="${1:?Name required}"
    echo "Hello, $name!"
}

# With return values
function add() {
    local a="${1:-0}"
    local b="${2:-0}"
    echo $((a + b))
}

result=$(add 5 3)

Common Patterns

Error Handling Pattern

die() {
    printf 'ERROR: %s\n' "$1" >&2
    exit "${2:-1}"
}

try_command() {
    if ! "$@"; then
        die "Command failed: $*"
    fi
}

Argument Parsing Pattern

while [[ $# -gt 0 ]]; do
    case "$1" in
        -h|--help)  usage; exit 0 ;;
        -v|--verbose) VERBOSE=true; shift ;;
        --)         shift; break ;;
        -*)         die "Unknown option: $1" ;;
        *)          break ;;
    esac
done

Anti-Patterns

Don't Do Why
for f in $(ls) for f in * Parsing ls breaks on spaces
` result=cmd ` result=$(cmd) Backticks don't nest
[ $var = x ] [[ "$var" = x ]] Unquoted vars break
cd dir; cmd (cd dir && cmd) cd can fail silently

Practice Exercises

  1. Hello Script: Write a script that greets by name
  2. File Counter: Count files in a directory by extension
  3. Backup Script: Create timestamped backups
  4. Config Parser: Parse key=value config files

Troubleshooting

Common Errors

Error Cause Fix
unbound variable Using undefined var Use ${var:-}
syntax error Missing quotes Check bracket matching
command not found PATH issue Use full path
permission denied Not executable chmod +x script

Debug Techniques

# Enable trace
set -x

# Verbose PS4
export PS4='+(${BASH_SOURCE}:${LINENO}): '

# Shellcheck
shellcheck script.sh

Resources