SuperAPI AI Directory

bash-script-writing

Writing & research

View repository

Updated 10-16 00:20

About this skill

Modular Bash Script Writing

Follow this structure when writing bash scripts.

Script Template

Place main() immediately after variables so the workflow is visible at file top.

#!/usr/bin/env bash
set -euo pipefail

################################################################################

Script Title

################################################################################

OVERVIEW -------- Brief description of what this script does USAGE ----- script-name arg1 arg2 CONFIGURATION ------------- Environment variables or config requirements

################################################################################

Colors

green='\033[0;32m' blue='\033[0;34m' yellow='\033[1;33m' red='\033[0;31m' nc='\033[0m'

Configuration

VAR_ONE=${VAR_ONE:-default} VAR_TWO=${VAR_TWO:?VAR_TWO is required}

################################################################################

Main Orchestration

################################################################################

main() { parse_arguments "$@" step_one step_two log "Complete!" }

################################################################################

Helper Functions

################################################################################

log() { echo -e "${green}==>${nc} ${1}"; } info() { echo -e "${blue}Info:${nc} ${1}"; } warn() { echo -e "${yellow}Warning:${nc} ${1}"; } error() { echo -e "${red}Error:${nc} ${1}" >&2; exit 1; }

################################################################################

Core Functions

################################################################################

function_name() { log "What this function does..."

Implementation

log "Complete" }

################################################################################

Script Execution

################################################################################

main "$@"


## Function Guidelines

- **Name clearly**: Verb-based names (`setup_directory`, `validate_config`)
- **One purpose**: If you need "and" to describe it, split it
- **Log progress**: Start with `log "..."`, end with status
- **Keep focused**: 5-20 lines per function
- **Group with section headers**: Use `####` dividers between logical groups