Leggi qui:
http://www.tldp.org/LDP/abs/html/arrays.html
e guarda questo script:
Ovviamente, al posto dei commentati shift: shift; devi trovare un modo per eliminare gli elementi che trovi dall'array $ARGS in modo da poter inserire il caso di default *);;codice:#!/bin/bash function usage(){ echo >&2 "" echo >&2 "usage: ${0##*/} -t <days> -d <dir> [FILENAME]" echo >&2 "" exit 1; } ARGS=($@) [ -z "$ARGS" ] && usage FILETYPE=${ARGS[$(($#-1))]} [ -z "$FILETYPE" ] && usage #ARGS=(${ARGS[@]:0:$(($#-1))}) for GET in $(seq 0 $((${#ARGS[@]}-2))); do case "${ARGS[$GET]}" in -t) DAYS=${ARGS[$(($GET+1))]} [ -z $DAYS ] && usage #shift; shift; ;; -d) DIR=${ARGS[$(($GET+1))]} [ -z $DIR ] && usage #shift; shift; ;; -h|--help|?) usage ;; esac done echo "" echo "DAYS: $DAYS" echo "DIR: $DIR" echo "FILE: $FILETYPE" echo ""
C'e' shift perche' usavo questo modello per i parametri posizionali, ma come vedi $@ è memorizzato come array quindi le regole sono quelle degli array.
![]()