Jeśli używasz bash, możesz użyć ${10}
.
$ {...} składnia wydaje się być zgodny z POSIX, w tym konkretnym przypadku, ale może to być korzystne, aby użyć polecenia shift
tak:
while [ "$*" != "" ]; do
echo "Arg: $1"
shift
done
EDIT: Zauważyłem, że nie zrobił wyjaśnij, co robi shift
. Po prostu przesuwa argumenty skryptu (lub funkcji). Przykład:
> cat script.sh
echo "$1"
shift
echo "$1"
> ./script.sh "first arg" "second arg"
first arg
second arg
W przypadku może pomóc, tutaj jest przykład z 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"
Można zakładać przykładowy scenariusz gdzie to nie działa? Wierzę, że 10 USD powinno po prostu działać i zawierać 10. argument ... – sloth
@dkson: nie. Jeśli nie używasz '{}' to rozważa 10 $ jako 1 $, a literał 0 – neuro