Como posso obter os parâmetros posicionais, começando de dois, ou mais geralmente, 'n'?

5

($@) Expands to the positional parameters, starting from one.

Como posso obter os parâmetros posicionais, a partir de dois ou mais geralmente, n ?

Eu quero usar os parâmetros posicionais a partir de dois, como argumentos para um comando, por exemplo,

myCommand $@
    
por Tim 16.03.2017 / 16:47

2 respostas

11

Para parâmetros posicionais a partir do 5º:

  • zsh ou yash .

    myCommand "${@[5,-1]}"
    

    (note, como sempre, que as aspas acima são importantes, ou de outra forma cada elemento estaria sujeito a split + glob em yash , ou os elementos vazios removidos em zsh ).

  • ksh93 , bash ou zsh :

    myCommand "${@:5}"
    

    (mais uma vez, citações importantes)

  • Cascas semelhantes a Bourne (inclui todas as camadas acima)

    (shift 4; myCommand "$@")
    

    (usando um subshell, então o shift só acontece lá).

  • shells semelhantes a csh:

    (shift 4; myCommand $argv:q)
    

    (subshell)

  • fish :

    myCommand $argv[5..-1]
    
  • rc :

    @{shift 4; myCommand $*}
    

    (subshell)

  • rc / es :

    myCommand $*('{seq 5 $#*})
    
  • es :

    myCommand $*(5 ...)
    
por 16.03.2017 / 18:10
6
$ foo=(1 2 3 4)
$ echo "${foo[@]}"
1 2 3 4
$ echo "${foo[@]:0:2}"
1 2
echo "${foo[@]:2}"
3 4
    
por 16.03.2017 / 16:59