No Bash / ksh / zsh, você pode usar algo como ${@:3:7}
para obter o 3º ao 9º parâmetro como palavras distintas, ou ${*:3:7}
para obtê-lo concatenado com o primeiro caractere de IFS
como marceneiro. (7, pois há sete no total de 3 a 9).
então:
$ set -- $(seq 11 21)
$ echo "${*:3:7}"
13 14 15 16 17 18 19
ou
$ a="${*:3:7}"
No entanto, se você quiser passar esses argumentos como parâmetros para outro comando, use "${@:3:7}"
diretamente na linha de comando em questão, ou seja,
somecmd "${@:3:7}"
Se você precisar fazer isso no shell padrão, não será possível usar ${var:n:m}
. Em vez disso, você precisará shift
dos primeiros argumentos e, em seguida, usar "$@"
, portanto:
arg1=$1
arg2=$2
shift 2
somecmd "$@"