Como fazer uma variável contendo todo o parâmetro rest do nth parâmetro particular

0

Como fazer uma variável contendo todo o parâmetro rest do nth parâmetro particular, por exemplo a string contém todos os dados do 3º parâmetro até o 9º parâmetro estar dentro de uma variável chamada $ a ... Agradecemos antecipadamente.

    
por abdan 15.02.2018 / 11:53

1 resposta

1

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 "$@"
    
por 15.02.2018 / 13:35

Tags