Tentando encontrar o índice de uma entrada em uma lista [duplicada]

0

Estou tentando encontrar o índice de uma entrada de lista usando este método simples:

#!/bin/sh

partList="500 1000 2000 4000"
a=( $partList )
echo ${a["500"]}

isso retorna Syntax error: "(" unexpected . E o mesmo erro se eu tentar echo ${a[500]} . Onde eu esperava que retornasse 0 se estivesse usando 500 .

Estou simplesmente procurando uma maneira rápida e suja de saber quando estou passando por uma lista:

 for j in $partList; do
   if [ $j is the first entry in the list $partList ]; then
     stuff happens..
   done
 done

se usei ou não o primeiro elemento dessa lista e, em caso afirmativo, faça alguma lógica.

Eu pensei que poderia fazer isso facilmente usando o índice da lista. Mas isso parece difícil com #!/bin/sh .

Alguma sugestão?

    
por Astrid 22.01.2016 / 14:03

1 resposta

1

Você reverteu o processo de pesquisa - array [index] retorna alguma coisa. array [array_element] não fornece o índice - você precisaria de uma tabela de consulta (melhor ainda, um mapa hash) para isso.

Mas, pelo que você está fazendo, na verdade você está apenas passando por cima dos índices! Em vez de j in $partList , faça um loop sobre j in $(seq ${#partlist[@]}) e use o índice para obter o elemento.

Por último ... nem isso é necessário, se você está realmente apenas usando o primeiro elemento, porque não apenas

j=${partList[0]}
stuff happens..
    
por 22.01.2016 / 14:12