📖
Internal Wiki
  • My Knowledge Wiki 🌿
  • ai
    • Prompts
  • beautiful
    • Beautiful websites
  • blog
    • best blog times
    • Good Blog Posts
  • career
    • First 90 Days
    • income streams
    • interview questions
    • Misc
    • Negotiation
    • On Call
  • coding
    • AWS
    • Bash
    • Browser Extensions
    • Cloudflare
    • CopyQ
    • Docker
    • Express
    • Filebase
    • Firebase
    • Git Commit Message Standards
    • GIT
    • Github Actions
    • html
    • TypeScript / JavaScript
    • JavaScript / TypeScript
    • NodeJS
    • npm
    • npx
    • Service Workers
    • Tunnel
    • Vite
    • Wrangler
    • New Angular Project
    • snippets
      • angular
        • Performance Tracking
        • Web3 in Angular Projects
      • nodejs
        • Dynamically load classes
  • communities
    • Communities
  • devex
    • Browser Experience
  • github
    • CI/CD
  • infra
    • Kubernetes
    • Windows
  • links
    • AI
    • Awesome lists
    • Beautify Code
    • cli
    • Code Snippet Images
    • Coding
    • Courses
    • Creators
    • Crypto
    • CSS
    • Design
    • Diagrams
    • Domains
    • events
    • Fonts
    • Funding
    • gifs
    • Github
    • I18N
    • Icons
    • Identity
    • Image (drawing, manipulation, ...)
    • All around infra (hosting, serverless, ...)
    • JSON utils
    • Libraries and Tools
    • Markdown
    • Machine Learning
    • Monetization
    • Music
    • No Code Tools
    • Node and NPM (and other package managers)
    • nostr
    • Other
    • Pitch
    • react
    • Resources
    • Resumes
    • SaaS
    • scraping
    • Screenshots
    • Search
    • SEO
    • Services
    • Social Media Engagement
    • Popular Stacks
    • Storage
    • Terms
    • Text to speech
    • Text Effects
    • Tutorials
    • video
    • Nice wasm libs
    • Writing
    • YouTube
  • linux-commands
    • convert
    • ffmpeg
    • General
    • Screen
  • Quotes
    • Twitter Quotes
  • reddit
    • Side projects
  • shops
    • Dog Stuff
    • wir-machen-druck
  • watch
    • Youtube Videos
  • wine
    • Wine
  • learning
    • house
      • Heating Energy Act
    • sbf
      • SBF Navi
      • SBF Praxis
      • SBF
Powered by GitBook
On this page
  • Bash Bible
  • Template
  1. coding

Bash

PreviousAWSNextBrowser Extensions

Last updated 1 year ago

Bash Bible

  • - lots of useful bash scripts

Template

Great template to start with:

#!/usr/bin/env bash

set -Eeuo pipefail
trap cleanup SIGINT SIGTERM ERR EXIT

script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)

usage() {
    cat <<EOF
Usage: $(basename "${BASH_SOURCE[0]}") [-h] [-v] [-f] -p param_value arg1 [arg2...]

Script description here.

Available options:

-h, --help      Print this help and exit
-v, --verbose   Print script debug info
-f, --flag      Some flag description
-p, --param     Some param description
EOF
    exit
}

cleanup() {
    trap - SIGINT SIGTERM ERR EXIT
    # script cleanup here
}

setup_colors() {
    if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then
        NOFORMAT='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m'
    else
        NOFORMAT='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW=''
    fi
}

msg() {
    echo >&2 -e "${1-}"
}

die() {
    local msg=$1
    local code=${2-1} # default exit status 1
    msg "$msg"
    exit "$code"
}

parse_params() {
    # default values of variables set from params
    flag=0
    param=''

    while :; do
        case "${1-}" in
        -h | --help) usage ;;
        -v | --verbose) set -x ;;
        --no-color) NO_COLOR=1 ;;
        -f | --flag) flag=1 ;; # example flag
        -p | --param)          # example named parameter
            param="${2-}"
            shift
            ;;
        -?*) die "Unknown option: $1" ;;
        *) break ;;
        esac
        shift
    done

    args=("$@")

    # check required params and arguments
    [[ -z "${param-}" ]] && die "Missing required parameter: param"
    [[ ${#args[@]} -eq 0 ]] && die "Missing script arguments"

    return 0
}

parse_params "$@"
setup_colors

# script logic here

msg "${RED}Read parameters:${NOFORMAT}"
msg "- flag: ${flag}"
msg "- param: ${param}"
msg "- arguments: ${args[*]-}"
https://github.com/dylanaraps/pure-bash-bible