Se si utilizza bash, è possibile utilizzare ${10}
.
$ {...} sintassi sembra essere POSIX-compliant in questo caso particolare, ma potrebbe essere preferibile utilizzare il comando shift
così:
while [ "$*" != "" ]; do
echo "Arg: $1"
shift
done
EDIT: ho notato che non ho spiegare cosa fa shift
. Sposta semplicemente gli argomenti dello script (o funzione). Esempio:
> cat script.sh
echo "$1"
shift
echo "$1"
> ./script.sh "first arg" "second arg"
first arg
second arg
Nel caso in cui si può aiutare, ecco un esempio con getopt/shift:
while getopts a:bc OPT; do
case "$OPT" in
'a')
ADD=1
ADD_OPT="$OPTARG"
;;
'b')
BULK=1
;;
'c')
CHECK=1
;;
esac
done
shift $(expr $OPTIND - 1)
FILE="$1"
Si potrebbe inserire uno script di esempio in cui questo non sta funzionando? Credo che $ 10 dovrebbero solo funzionare e contenere il decimo argomento ... – sloth
@dkson: no. Se non usi '{}' considera $ 10 come $ 1 e la lettera litterale 0 – neuro