André Amorim

Crafting Web Experiences

//

Bash Script Long Options/Flags

script.sh:

die() { echo "$*" >&2; exit 2; }  
needs_arg() { if [ -z "$OPTARG" ]; then die "No arg for --$OPT option"; fi; }

while getopts ab:c:-: OPT; do
  
  if [ "$OPT" = "-" ]; then   
    OPT="${OPTARG%%=*}"       
    OPTARG="${OPTARG#$OPT}"   
    OPTARG="${OPTARG#=}"      
  fi
  case "$OPT" in
    a | alpha )    alpha=true ;;
    b | bravo )    needs_arg; bravo="$OPTARG" ;;
    c | charlie )  needs_arg; charlie="$OPTARG" ;;
    ??* )          die "Illegal option --$OPT" ;;  
    ? )            exit 2 ;;  
  esac
done
shift $((OPTIND-1)) 


echo "alpha: $alpha | bravo: $bravo | charlie: $charlie"

Usage:

bash script.sh --alpha --bravo=value-here --charlie="Long value"

Or:

bash script.sh -a -b value-here -c "Long value"

Published date:

Modified date: