Pergunta

Como obter o nth argumento posicional em Bash, onde n é variável?

Foi útil?

Solução

Use o recurso de indireção de Bash:

#!/bin/bash
n=3
echo ${!n}

Executando esse arquivo:

$ ./ind apple banana cantaloupe dates

Produz:

cantaloupe

Editar:

Você também pode fazer fatia de matriz:

echo ${@:$n:1}

Mas não os subscritos de matriz:

echo ${@[n]}  #  WON'T WORK

Outras dicas

Se N é salvo em uma variável, use

eval echo \${$N}

Se for um uso constante

echo ${12}

desde

echo $12

não significa o mesmo!

$1 $2 ... $n

$0 Contém o nome do script.

Como você pode ver na Bash por Exemplo, você só precisa usar o automático de variáveis $1, $2, e assim por diante.

$# é usado para obter o número de argumentos.

Ler

Manipulação de parâmetros posicionais

e

Expansão de parâmetros

$ 0: o primeiro parâmetro posicional

$ 1 ... $ 9: os elementos da lista de argumentos de 1 a 9

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top